【发布时间】:2015-02-12 08:38:23
【问题描述】:
诚然,我是 AngularJS 新手,但我不明白为什么这段代码可以在 Chrome 和 Firefox 中运行,但在 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() 为 IE11 提供 "access is denied" 消息,但适用于 Chrome 和 Firefox。我尝试更改为window.location(),并得到同样的错误。
这不是跨域问题(所有内容都在同一个 foo.net 域中)。
【问题讨论】:
-
最简单的方法是不返回文件,而是返回文件的 url,然后您可以在新窗口中打开它。要在 Angular 中打开一个窗口,请使用 $window(将其注入控制器)docs.angularjs.org/api/ng/service/$window
-
即对本地文件使用不同的语法。使用:window.navigator.msSaveBlob(blob, 'file.txt');或 window.navigator.msSaveOrOpenBlob(blob, 'file.txt'); msdn.microsoft.com/en-us/library/ie/hh673542(v=vs.85).aspx
标签: angularjs internet-explorer internet-explorer-11