我正试图从一个网络工作者XMLHttpRequest
中制作一个跨源的。设置如下:
example.com
发出的。s3.amazon.com
Access-Control-Allow-Origin
头响应守则如下:
var xhr = new XMLHttpRequest();
//this will redirect to 'https://s3.amazon.com/...'
xhr.open('GET', 'https://example.com/document/1234/download');
xhr.send(null);
Chrome、Firefox、Safari和MS on Win 10
这段代码正确地遵循重定向,无论是从主JS文件调用还是从web工作者调用。
IE 10/11关于Win 7
当从主JS文件调用时,这段代码正确地遵循重定向的只。当从web工作者调用时,请求将被中止,而不会出现错误或日志消息。
可以通过编辑浏览器安全设置和启用“跨域访问数据源”来实现这一工作,但期望用户这样做是不可行的。
问题
发布于 2017-04-13 15:21:14
对于这个问题,有几个可能的解决办法,其中两个是我探讨过的:
备选案文1
function callXHR() {
var xhr = new XMLHttpRequest();
//this will redirect to 'https://s3.amazon.com/...'
xhr.open('GET', 'https://example.com/document/1234/download');
xhr.send(null);
}
if(isIE) {
//callXHR in main js file
} else {
//callXHR in web worker
}
选项2
//from a web worker
if(isIE) {
//give the exact url so the xhr doesn't get a 302
callXHR('https://s3.amazon.com/...');
} else {
//this will follow the redirect to https://aws...
callXHR('https://example.com/document/1234/download');
}
我决定选择2,因为我不想放弃网络工作者。
这里提供的答案主要集中在CORS或重定向上,但没有一个真正解决了我遇到的具体问题。
https://stackoverflow.com/questions/43194257
复制相似问题