在XMLHttpRequest返回的blob对象中打开一个包含PDF数据的新窗口

bkb*_*oth 13 javascript ajax internet-explorer google-chrome

在JavaScript内部我正在向服务器发出XMLHttpRequest,该服务器生成PDF并返回PDF数据.在Chrome中,我可以在新的窗口/标签中打开此数据,如下所示:

window.open( URL.createObjectURL(RETURNED_DATA) );
Run Code Online (Sandbox Code Playgroud)

其中RETURNED_DATA是从XHR返回的实际数据.

在IE10中(我假设IE的旧版本),当我尝试window.open()使用DOMString从中返回的对象时,我得到"权限被拒绝"URL.createObjectURL()

我已经尝试了各种版本,例如在发送XHR之前打开新窗口并在XHR回调中更新新窗口的位置,并打开一个包含XHR的简单HTML文件的新窗口,以便它可以更新它自己在XHR回调中的位置.所有这些变体都适用于Chrome,但导致IE10中出现"权限被拒绝"错误.

我最好的猜测是它是由同源策略引起的.DOMString在Chrome vs IE 中将对象记录到控制台时,我注意到Chrome会在协议和主机之前添加字符串,blob:http://localhost:8080/BLOB_DATA而IE10只有blob:BLOB_DATA.

任何想法如何在IE中解决这个问题?

Col*_*inM 1

对于 IE 10 和 11,您可以使用 msSaveOrOpenBlob

window.navigator.msSaveOrOpenBlob(blob, fileName);
Run Code Online (Sandbox Code Playgroud)