我认为跨浏览器支持的日子已经成为过去,各种各样的库都与网络浏览器的一些细微差别和声称的标准化隔离开来......但
我正在尝试使用angularjs(v1.2.27)执行$ http get请求,因此:
$(document).ready(function() {
$('#id1').focus();
});
在Chrome,FF和Safari(Mac和Win 7,8到目前为止)上游戏,但在IE10 +上没有,我明白了:
SEC7118:https://[api.domain.com]/pdf/55abc12345613af7946e的XMLHttpRequest需要跨源资源共享(CORS)。 错误:访问被拒绝。 在匿名函数(https://[domain.com]/site/scripts/scripts.js:289:6) 在匿名函数(https://[domain.com]/public/assets/js/angular/angular.js:7736:11) at wrappedCallback(https://[domain.com]/public/assets/js/angular/angular.js:11106:15) at wrappedCallback(https://[domain.com]/public/assets/js/angular/angular.js:11106:15) 在匿名函数(https://[domain.com]/public/assets/js/angular/angular.js:11192:11) 在Scope.prototype。$ eval(https://[domain.com]/public/assets/js/angular/angular.js:12181:9) 在Scope.prototype。$ digest(https://[domain.com]/public/assets/js/angular/angular.js:12010:15) 在Scope.prototype。$ apply(https://[domain.com]/public/assets/js/angular/angular.js:12285:13) 完成后(https://[domain.com]/public/assets/js/angular/angular.js:7994:34) 在completeRequest(https://[domain.com]/public/assets/js/angular/angular.js:8196
api服务器返回的响应头是
$http({
url: vm.hostName + '/pdf/' + id,
method : 'GET',
responseType : 'arraybuffer',
cache : false})
.success(function (response) {
var file = new Blob([response], { type: 'application/pdf' });
var fileURL = URL.createObjectURL(file);
console.log(fileURL);
console.log(response.data);
window.open(fileURL);
});
如果我查看响应主体(在开发人员工具中),我会收到一条消息,表明它无法呈现(因为它是pdf而不是不合理的),但提供了一个保存内容的链接,保存并打开显示正确的pdf。
网络响应似乎表明根据内容长度下载内容。
我查看了一些与COR相关的帖子,但无济于事。最接近的SEC7118: XMLHttpRequest for /socket.io/1/?t=1370206038749 required Cross Origin Resource Sharing (CORS)没有帮助。 微软博客http://blogs.msdn.com/b/ie/archive/2012/02/09/cors-for-xhr-in-ie10.aspx也没有提供更多线索(我猜测它可能与' arraybuffer'和二进制数据有关,但我现在正在死路一条,寻找进一步的灵感。
有人建议别的吗? PS。我控制着服务器api,它是由vert.x(v2.5)作为Java REST服务提供的服务。
由于