【发布时间】:2017-04-13 23:21:14
【问题描述】:
我正在尝试创建一个跨域XMLHttpRequest 来自网络工作者。设置如下:
- 原始请求是针对同一个域
example.com - 服务器将请求重定向(302)到
s3.amazon.com - S3 已为 CORS 正确设置,以正确的
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);
Win 10 上的 Chrome、Firefox、Safari 和 MS Edge
当从主 JS 文件和网络工作者调用时,此代码正确地遵循重定向。
Win 7 上的 IE 10/11
当从主 JS 文件调用时,此代码正确地遵循重定向仅。当从 Web Worker 调用时,请求被中止,没有错误或日志消息。
可以通过编辑浏览器安全设置并启用“跨域访问数据源”来完成这项工作,但期望用户这样做是不可行的。
问题
- 是否需要一些特殊设置才能使 IE 10/11 跟随重定向?
- 除了不透明的中止请求之外,还有其他方法可以从 IE 10/11 获得更好的输出吗?
【问题讨论】:
-
在阅读here 的评论部分后,我发现:“看起来您的问题是试图从不太安全的区域向更安全的区域发出 XHR 请求。”也许您的代码很好,最终代码会使用 https 托管吗?您是否有能力使用 https 测试您的代码而不将其推送到生产环境中?
-
这一切都在 https 上进行了测试。我将更深入地查看这些 cmets,但乍一看,它们似乎并没有解决我的问题。感谢您的链接。
-
您不能自己从响应头中读取重定向头并采取相应措施或 IE 10/11 吗?例如。在您的服务器上使用功能检测,然后如果浏览器不遵循重定向,请使用您的自定义 ajax 调用代码。我可以写一个例子,但只需要几天时间,因为我周末不使用笔记本电脑。
-
@praszyk 有多种解决方法,但显然我不想使用它们。我试图了解为什么这个特定案例会失败,以及它是否是 IE 中的错误。
标签: javascript ajax internet-explorer amazon-s3 web-worker