2016-09-15 31 views
1

IE 11/Edgeにblob urlをPDFとして埋め込むことができません。 CORSの問題があり、IEは「アクセス拒否」を出します。私のSOの研究から、私はこれがIEの固有のセキュリティ制限によるものであることに気付きました。私の質問は、RESTサービスからBLOB URLデータ応答を取得し、ブラウザに埋め込まれたものを表示する他の方法です。私はサードパーティのライブラリを使用しないようにしたい。 サービスとして以下を返します:IE11/Edgeにblob PDFレスポンスを正常に埋め込む方法

function getTest(id) { 
     miEService.get(id) 
       .then(function (response) {       
         var fileUrl = URL.createObjectURL(response.data); 
         $scope.pdfData = $sce.trustAsResourceUrl(fileUrl);       
       }); 


get: function (id) { 
     var config = { 
      headers: { 
       accept: 'application/pdf' 
      } 
      , responseType: 'blob' 

     } 
     return $http.get(miEnv.services.eApi + '?$filter=id eq' + 
      ' ' + id, config); 

は最後に、HTML内の表示は以下の通りである -

<object id="pdf" data={{$ctrl.pdfData}} type="application/pdf" width="100%" height="100%" alt="pdf" class="view-pdf_document"> 

答えて

0

RESTサービスは、PDFファイルのバイナリデータを返す場合、あなただけの可能性バイナリコンテンツ自体ではなく、あなたのページのURLをIframeとして埋め込みます。 pdfをレンダリングする必要があります。そうでなければ、私は過去にpdfをリンクにして成功していました。リンクをクリックすると、新しいタブでレストサービスにリクエストが開きます。残りのサービスをページのURLに表示したくないという問題がある場合は、自分のサーバーでリクエストをプロキシする必要があります。

+0

ありがとうございます!私はコードで私の質問を更新しました。 URL.createObjectURL()を使用して、サービスから戻って表示するレスポンスのURLを作成しようとしています。しかし、IEはそれを許さない。私は、BLOB URLを作成する代わりに、BLOBを取り出して表示する別の方法を見つけようとしています。 – sdd

+0

@sdd私は、フレームURLを残りのサービスURLに設定することを意味する場合、変換するつもりはありません – MorningDew

関連する問題