下面是JavaScript代碼的片段時:的Javascript報告CORS錯誤加載google.com
var requ = "http://google.com";
var xmlhttp;
xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function()
{
// BREAKPOINT A
if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
{
// never gets into this block
}
};
xmlhttp.open("GET", requ, true);
xmlhttp.send();
代碼執行通過斷點正好2倍。
第一次:xmlhttp.readyState == 1; xmlhttp.status == 0;
第二次:xmlhttp.readyState == 4; xmlhttp.status == 0;
鉻控制檯報告:
XMLHttpRequest cannot load http://google.com/. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:50261' is therefore not allowed access.
問題是什麼?爲什麼我無法獲得成功的迴應?
編輯#1
所以,問題是,google.com不支持CORS。但是,也許我可以向另一個方向擴展這個問題。
我正在使用Fiddler在http://google.com上發送GET。 請求中沒有Origin頭文件。實際上,根本沒有指定標題。 請求已成功完成。我怎樣才能測試一個網站是否支持CORS而無需編寫JS代碼並執行它?我如何使用Fiddler來測試同樣的事情?
編輯#2
我發現了一個site迅速回答我的問題。 我仍然想知道爲什麼它不通過提琴手。
讀入同源策略 - 你不能做XHR時不同的域。在stackoverflow上有關於這個主題的很多問題。 – Christoph
Fiddler是本地代理;您可以使用Composer發送您想要的任何請求;它不受同源策略的限制,因爲它不是一個Web應用程序。它會發送你告訴它的任何標題;如果你想發送一個Origin頭文件,添加一個。 – EricLaw