gpt4 book ai didi

javascript - CORS XMLHttpRequest 在 IE10-11 web worker 中失败

转载 作者:数据小太阳 更新时间:2023-10-29 03:56:16 27 4
gpt4 key购买 nike

我正在尝试从网络 worker 中创建一个跨源XMLHttpRequest。设置如下:

  • 原始请求是针对同一域 example.com
  • 服务器将请求重定向 (302) 到 s3.amazon.com
  • S3 已针对 CORS 进行了正确设置,使用正确的 Access-Control-Allow-Origin header 进行响应

代码如下:

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 文件还是从 Web Worker 调用时,此代码都正确地遵循重定向。

Win 7 上的 IE 10/11

当从主 JS 文件调用时,此代码正确遵循重定向。当从 web worker 调用时,请求被中止,没有错误或日志消息。

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

问题

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

最佳答案

这个问题有几种可能的解决方法,我探索了其中两种:

选项 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,因为我不想放弃 Web Worker。

此处提供的答案主要针对 CORS 或重定向,但没有一个真正解决了我遇到的具体问题。

关于javascript - CORS XMLHttpRequest 在 IE10-11 web worker 中失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43194257/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com