不知何故,我们能够在Chrome(最新稳定版)& Firefox上创建跨源XHR请求,而不使用CORS或任何类型的东西。我对此感到困惑,因此提出这个问题。跨域请求在没有CORS的情况下进行
做一个XHR POST请求http://partychat-hooks.appspot.com/post/p_mwe2ztni
与数据:
{body:"Some text"}
如果你是一个支持jQuery的网站,只是在控制台上键入$.post("http://partychat-hooks.appspot.com/post/p_mwe2ztni",{body:"Hello World"})
。 SO有Jquery,所以你现在可以按F12并将其粘贴到控制台中。
请求从网络选项卡中的“等待”转为“取消”。浏览器甚至给我们一个警告但是,wireshark告诉我这个请求实际上已经完成。 (并通过聊天室中的ping进行确认(请通过[email protected]加入我们))。
以下屏幕截图示出了三两件事:
- 请求被JS
- 制成的浏览器中止请求,因为它是一个跨源请求的w/o CORS。 (大概一个OPTIONS请求应该已经发送)
- 右上角的弹出窗口显示请求以某种方式成功。
这里是Wireshark的显示请求响应(担任过谷歌的AppEngine)截图
您可以从here得到PCAP文件。
此外,值得注意的是,我没有看到任何浏览器根据OPTIONS请求(它应该检查CORS支持)。
有人请帮我们解决这个谜。
从我读到的内容来看,简单的请求会运行资源共享检查,这将在第1步(0访问控制 - 允许源头)中失败,应用网络错误步骤,从而使请求失败。 – Nemo
好了,它可以检查标题,请求已完成。这只是意味着JS没有被授予访问权限。 – Greg