2016-09-15 108 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格式的二进制数据,你可以只将网址作为Iframe嵌入到您的网页中,而不是二进制内容本身。它应该呈现PDF。如果没有,我已经在过去取得了成功,只是让pdf成为一个链接,当你点击链接时,它会在新标签中打开对其他服务的请求。如果问题是您不希望剩余服务显示在页面上的url中,那么您可能必须通过您自己的服务器代理请求。

+0

谢谢!我用代码更新了我的问题。我试图使用URL.createObjectURL()来创建一个URL,然后从服务中获取响应并显示它。但IE不允许这样做。我试图找出采取blob并显示它的另一种方式,而不是创建blob URL。 – sdd

+0

@sdd我不是说转换if,我的意思是将框架URL设置为其他服务URL – MorningDew