簡體   English   中英

載入google.com時Javascript報告CORS錯誤

[英]Javascript reporting CORS error when loading google.com

這是Javascript代碼段:

            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();

代碼執行正好通過BREAKPOINT A 2次。

第一次:xmlhttp.readyState == 1; xmlhttp.status == 0;

第二次:xmlhttp.readyState == 4; xmlhttp.status == 0;

Chrome控制台報告:

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。 但是也許我可以朝另一個方向擴展這個問題。

我正在使用Fiddlerhttp://google.com上發送GET。 請求中沒有Origin標頭。 實際上,根本沒有指定頭。 請求已成功完成。 如何在不編寫和執行JS代碼的情況下測試網站是否支持CORS? 如何使用Fiddler測試同一件事?

編輯#2

我找到了一個網站 ,可以快速回答我的問題。 我還是想知道為什么它在Fiddler中不起作用。

readyState指示您的請求狀態。 readyState實質上等於“連接已建立”,而readyState則等於“請求完成”。

您的請求從1跳到4,因為您收到相同的原始策略錯誤。 如果您要執行適當的請求,則將包括狀態2和3(2:已收到標頭,3:正在接收響應正文)。

您的跨源請求進入了readyState 4,但實際上從未擁有200狀態。

有關更多信息: https : //developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM