我当然是AngularJS的新手,但是我找不到为什么此代码可在Chrome和Firefox中工作的原因,但却"Access is denied"在IE 11的JavaScript控制台中给出了原因。
"Access is denied"
我需要通过经过身份验证的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(),并遇到了相同的错误。
window.open()
"access is denied"
window.location()
这不是跨域问题(一切都在同一个foo.net域中)。
看起来IE阻止了blob上的window.open,但是实现了自己的功能来打开和保存blob。试一试
if (window.navigator && window.navigator.msSaveOrOpenBlob) { window.navigator.msSaveOrOpenBlob(blob); } else { var objectUrl = URL.createObjectURL(blob); window.open(objectUrl); }