不知何故,我们能够在 Chrome(最新稳定版)和 Firefox 上发出跨源 XHR 请求,而无需使用 CORS 或任何类似的东西。我对此感到困惑,因此提出了这个问题。
使用数据发出 XHR 发布请求http://partychat-hooks.appspot.com/post/p_mwe2ztni
:
{body:"Some text"}
如果您在启用 Jquery 的站点上,只需$.post("http://partychat-hooks.appspot.com/post/p_mwe2ztni",{body:"Hello World"})
在控制台上键入。所以有 Jquery,所以你现在可以按 F12 并将其粘贴到你的控制台中。
该请求在网络选项卡中从“待处理”变为“已取消”。浏览器甚至给了我们一个警告,但是,wireshark 告诉我请求实际上是在发出的。(并通过聊天室上的 ping 确认(通过 abhshkdz@im.partych.at 加入我们))。
以下屏幕截图显示了 3 件事:
- 请求是由 JS 发出的
- 浏览器中止了请求,因为它是一个没有 CORS 的跨域请求。(大概应该已经发送了一个 OPTIONS 请求)
- 右上角的弹出窗口显示请求以某种方式成功。
这是 WireShark 的屏幕截图,显示了请求响应(通过 Google AppEngine 提供)
您可以从此处获取 pcap 文件。
此外,值得注意的是,我根本没有看到浏览器发出任何 OPTIONS 请求(它应该检查 CORS 支持)。
请有人帮助我们解开这个谜团。