首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >CORS XMLHttpRequest在IE10-11网络工作者中失败。

CORS XMLHttpRequest在IE10-11网络工作者中失败。
EN

Stack Overflow用户
提问于 2017-04-03 21:05:35
回答 1查看 1.3K关注 0票数 8

我正试图从一个网络工作者XMLHttpRequest 中制作一个跨源的。设置如下:

  • 原始请求是向同一个域example.com发出的。
  • 服务器将请求重定向到s3.amazon.com
  • 为CORS正确地设置了S3,使用正确的Access-Control-Allow-Origin头响应

守则如下:

代码语言:javascript
运行
复制
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工作者调用时,请求将被中止,而不会出现错误或日志消息。

可以通过编辑浏览器安全设置和启用“跨域访问数据源”来实现这一工作,但期望用户这样做是不可行的。

问题

  1. 是否有一些特殊的设置,使IE10/11遵循重定向?
  2. 除了不透明的中止请求之外,还有其他方法可以从IE10/11获得更好的输出吗?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-13 15:21:14

对于这个问题,有几个可能的解决办法,其中两个是我探讨过的:

备选案文1

代码语言:javascript
运行
复制
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

代码语言:javascript
运行
复制
//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或重定向上,但没有一个真正解决了我遇到的具体问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43194257

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档