Cross Origin请求没有CORS

时间:2013-09-01 13:03:39

标签: ajax google-app-engine cross-domain

不知何故,我们能够在Chrome上制作一个跨越XHR请求(最新稳定版)& Firefox没有使用CORS或任何类型的东西。我很困惑,所以这个问题。

使用数据向http://partychat-hooks.appspot.com/post/p_mwe2ztni发送XHR发布请求:

{body:"Some text"}

如果您在启用Jquery的站点上,只需在控制台上键入$.post("http://partychat-hooks.appspot.com/post/p_mwe2ztni",{body:"Hello World"})即可。 SO有Jquery,所以你现在可以按F12并将其粘贴到你的控制台中。

请求在网络选项卡中从“待处理”变为“已取消”。浏览器甚至给我们一个警告但是,wireshark告诉我该请求实际上已经发出。 (并通过聊天室上的ping确认(加入我们abhshkdz@im.partych.at))。

以下屏幕截图显示了3件事:

  1. 请求由JS
  2. 提出
  3. 浏览器中止了请求,因为它是一个没有CORS的跨源请求。 (据推测应该发送一个OPTIONS请求)
  4. 右上角的弹出窗口显示请求以某种方式成功。
  5. Screenshot of the request

    以下是WireShark的屏幕截图,显示了请求响应(通过Google AppEngine提供)

    Wireshark capture of the request response

    您可以从here获取pcap文件。

    另外值得注意的是,我根本没有看到浏览器提出任何OPTIONS请求(它应该检查CORS支持)。

    有人请帮助我们解开这个谜团。

1 个答案:

答案 0 :(得分:2)

如果请求为“simple method”(GET / HEAD / POST)且标题均为“simple headers”,则浏览器可以按照“simple”步骤操作请求,不包括航班前的OPTIONS。