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

在JavaScript中,我向服务器发出XMLHttpRequest,该服务器生成PDF并返回PDF数据。在Chrome中,我可以在新窗口/选项卡中打开此数据,如下所示:

window.open(URL.createObjectURL(返回的_数据));

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

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

我尝试过各种版本,比如在发送XHR之前打开新窗口,并在XHR回调中更新新窗口的位置,以及使用一个简单的HTML文件打开新窗口,该文件只包含XHR,以便它可以在XHR回调中更新自己的位置。所有这些变体都在Chrome中工作,但在IE10中会导致“拒绝许可”错误

我最好的猜测是,这是由同一原产地政策造成的。在Chrome vs IE中将DOMString对象记录到控制台时,我注意到Chrome在字符串前面加了协议和主机,所以blob:http://localhost:8080/BLOB_DATA而IE10只有blob:blob\u数据

如何在IE中解决这个问题

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

window.navigator.msSaveOrOpenBlob(blob,文件名);

发表评论