一尘不染

在AngularJS中设置window.location或window.open可使IE 11中的“访问被拒绝”

angularjs

我当然是AngularJS的新手,但是我找不到为什么此代码可在Chrome和Firefox中工作的原因,但却"Access is denied"在IE
11的JavaScript控制台中给出了原因。

我需要通过经过身份验证的REST调用来显示PDF。理想情况下,它将以弹出(预览)类型的窗口显示。

到目前为止的代码如下:

$http.post( url, payload, {
    headers : {
        "Authorization": token
    }, 
    responseType: "arraybuffer"
}).success(function ( data ) {
    var file = new Blob( [ data ], { type: 'application/pdf' });
    var fileURL = URL.createObjectURL( file );
    window.open( fileURL );
}

window.open()给出了"access is denied"对IE11的消息,但在Chrome和Firefox的作品。我尝试更改为window.location(),并遇到了相同的错误。

这不是跨域问题(一切都在同一个foo.net域中)。


阅读 503

收藏
2020-07-04

共1个答案

一尘不染

看起来IE阻止了blob上的window.open,但是实现了自己的功能来打开和保存blob。试一试

if (window.navigator && window.navigator.msSaveOrOpenBlob) {
    window.navigator.msSaveOrOpenBlob(blob);
}
else {
    var objectUrl = URL.createObjectURL(blob);
    window.open(objectUrl);
}
2020-07-04