【问题标题】:How to successfully embed blob PDF response in IE11/Edge如何在 IE11/Edge 中成功嵌入 blob PDF 响应
【发布时间】:2017-03-14 23:22:09
【问题描述】:

我无法在 IE 11/Edge 中将 blob url 作为 PDF 嵌入。存在 CORS 问题,IE 给出“拒绝访问”。从我对 SO 的研究中,我意识到这是由于 IE 固有的安全限制。我的问题是有没有其他方法可以从 REST 服务获取 blob URL 数据响应并将其显示在浏览器中。我想避免使用任何第三方库。 服务返回如下:

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">

【问题讨论】:

    标签: angularjs pdf internet-explorer-11 microsoft-edge


    【解决方案1】:

    如果 rest 服务返回 pdf 的二进制数据,您可以将 url 作为 iframe 而不是二进制内容本身嵌入到您的页面中。它应该呈现pdf。如果没有,我过去已经成功了,只是将 pdf 作为链接,当您单击该链接时,它会在新选项卡中打开对其余服务的请求。如果问题是您不希望其余服务显示在页面上的 url 中,那么您可能必须通过自己的服务器代理请求。

    【讨论】:

    • 谢谢!我已经用代码更新了我的问题。我正在尝试使用 URL.createObjectURL() 从我从服务返回的响应中创建一个 URL,然后显示它。但是 IE 不允许这样做。我正在尝试找出另一种获取 blob 并显示它的方法,而不是创建 blob URL。
    • @sdd 我的意思不是转换 if,我的意思是将框架 URL 设置为其余服务 URL
    猜你喜欢
    • 2016-11-25
    • 2017-01-13
    • 1970-01-01
    • 2017-12-10
    • 2015-10-23
    • 2021-07-23
    • 1970-01-01
    • 1970-01-01
    • 2020-04-05
    相关资源
    最近更新 更多