如何在Edge和IE中使用blob和createObjectURL

时间:2017-07-18 20:45:21

标签: javascript ajax pdf blob

我正在使用以下代码将PDF从AJAX请求加载到窗口中:

$('#divEmbedPdf').empty();

var req = new XMLHttpRequest();
req.open('GET', '/api/read/file?p_key=<some key>', true);
req.responseType = 'blob';
req.setRequestHeader('SomeAuthHeader', 'SomeTokenValue');
req.onload = function (event) {
    var fblob = req.response;

    $('<iframe/>', {
        src: window.URL.createObjectURL(fblob),
        frameborder: 0,
        marginheight: 0,
        marginwidth: 0,
        css: {
            position: 'absolute',
            width: '100%',
            height: '100%'
        }
    }).appendTo($('#divEmbedPdf'));
}
req.send();

这在Chrome和FF中运行良好,但Edge会抛出以下错误:

SEC7134: Resource 'blob:C88E2211-80B6-4933-B5E1-0E8DE3665368' not allowed to load.

有没有办法让这项工作与Edge一起使用?我不想打开一个新窗口,因为它在一个弹出窗口中运行,我希望看起来持久而不打开和关闭。正如您将注意到我在身份验证请求中发送自定义标头,因此我不能只创建一个iframe并将src属性设置为路径。

1 个答案:

答案 0 :(得分:2)

我想现在你已经拥有了answer

  

感谢您提供有关此问题的此信息。我们   以前确认过这个问题,并且已经发布了一个解决方案   Edge的新版本。我们正在将此问题作为一个副本解决   现有的内部错误报告。我们期待更多的反馈   您可能了解我们如何改进Microsoft Edge。