2013-09-01 49 views
2

不知何故,我們能夠在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]加入我們))。

以下屏幕截圖示出了三兩件事:

  1. 請求被JS
  2. 製成的瀏覽器中止請求,因爲它是一個跨源請求的w/o CORS。 (大概一個OPTIONS請求應該已經發送)
  3. 右上角的彈出窗口顯示請求以某種方式成功。

Screenshot of the request

這裏是Wireshark的顯示請求響應(擔任過谷歌的AppEngine)截圖

Wireshark capture of the request response

您可以從here得到PCAP文件。

此外,值得注意的是,我沒有看到任何瀏覽器根據OPTIONS請求(它應該檢查CORS支持)。

有人請幫我們解決這個謎。

回答

1

提供所述請求是「simple method」(GET/HEAD/POST)和集管都是「simple headers」,則瀏覽器可以按照該請求的「simple」步驟,其不包括預OPTIONS -飛行。

+0

從我讀到的內容來看,簡單的請求會運行資源共享檢查,這將在第1步(0訪問控制 - 允許源頭)中失敗,應用網絡錯誤步驟,從而使請求失敗。 – Nemo

+2

好了,它可以檢查標題,請求已完成。這只是意味着JS沒有被授予訪問權限。 – Greg

相關問題