我想了解整個CORS策略的工作原理。爲了解釋我的困惑,讓我給你舉個例子:瞭解頁面響應
$.get("https://www.google.com", function(response) { alert(response) });
上述要求將以下錯誤返回:
XMLHttpRequest cannot load https://www.google.com/ . Redirect from ' https://www.google.com/ ' to ' https://www.google.ca/?gfe_rd=cr&ei=TlqUWeGEH5HRXqW6utgI ' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin ' https://fiddle.jshell.net ' is therefore not allowed access.
現在,爲了該工作,谷歌將不得不塗白列表https://fiddle.jshell.net
。
現在,如果我想在一個平靜的API頁面上嘗試相同的事情,那就行了。我的問題很簡單,爲什麼?
試圖分析這個問題,我試着打了一個API,並分析其響應:
響應:
HTTP/1.1 200
Date:
Wed, 16 Aug 2017 14:31:32 GMT
Content-Length: 266
Connection: keep-alive
Content-Type: application/json; charset=utf-8
Server: Apigee Router
X-Content-Type-Options: nosniff
我來的結論,即它必須是頭。具體來說,我相信它是這個標題:Content-Type: application/json;
但我不知道,我試圖理解這一點,並希望有人在這裏可以向我解釋。
我不知道「在一個寧靜的API頁面上嘗試同樣的事情」的意思,但其要點是,默認情況下,瀏覽器會阻止您的前端JavaScript代碼訪問您發送的跨源請求的響應XHR或JavaScript庫中的Fetch API或Ajax方法 - 除非發送請求的服務器指示它選擇接收此類請求。而服務器表明選擇的方式是在響應中發送Access-Control-Allow-Origin響應頭。 – sideshowbarker
https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS是開始閱讀CORS協議如何工作的最佳地點 – sideshowbarker