首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >同步CORS XHR 302重定向失败,但异步工作

同步CORS XHR 302重定向失败,但异步工作
EN

Stack Overflow用户
提问于 2013-11-26 18:18:49
回答 1查看 3K关注 0票数 4

Firefox似乎是唯一在执行同步请求时不会抛出错误的浏览器,您知道为什么吗?

代码语言:javascript
运行
复制
// Make sure to have your JS console open when you run this
var url = '//api.soundcloud.com/resolve.json?url=http://soundcloud.com/matas/hobnotropic&client_id=83f67039ae0c3790030d256cb9029678';
var xhr = new XMLHttpRequest();
xhr.open('GET', url, false); // SYNCHRONOUS
xhr.onload = alert.bind(null, 'Loaded');
xhr.send(null);

执行几乎相同的异步XMLHttpRequest不会导致错误,请求也不会像预期的那样完成:

代码语言:javascript
运行
复制
// Make sure to have your JS console open when you run this
var url = '//api.soundcloud.com/resolve.json?url=http://soundcloud.com/matas/hobnotropic&client_id=83f67039ae0c3790030d256cb9029678';
var xhr = new XMLHttpRequest();
xhr.open('GET', url, true); // ASYNCHRONOUS
xhr.onload = alert.bind(null, 'Loaded');
xhr.send(null);

据我所知:

  • SoundCloud API返回适当的CORS头。
  • SoundCloud解析API执行对http://api.soundcloud.com/tracks/49931.json的302重定向。
  • 如果请求被执行为asynchronously,它将成功地遵循重定向和完成。
  • 如果请求是synchronously执行的,那么它将在控制台(sans )中出现以下错误而失败:
    • Chrome:"NetworkError:发生网络错误。“
    • Opera:"NetworkError:发生了网络错误。“
    • XMLHttpRequest异常101:同步请求中发生网络错误。

有人能解释一下同步请求失败的原因吗?为什么它会出现如此奇怪的错误,特别是在异步执行相同请求的情况下?为什么这个参数会有区别呢?它是Firefox还是WebKit/Blink中的一个已知的bug?

编辑:我有在Chrome的bug追踪器上打开一个新的问题,因为还没有人能够指出规范中任何能正确解释这种行为的东西。当我有机会的时候,我可能会为WebKit打开一个类似的问题。

EN

回答 1

Stack Overflow用户

发布于 2013-12-08 13:21:06

这似乎是为了阻止使用同步请求而故意作出的选择:

据我所能看到的是,我似乎从来没有支持它在第一。

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

https://stackoverflow.com/questions/20224883

复制
相关文章

相似问题

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