問題是: 爲什麼我可以從瀏覽器/郵遞員/甚至Node.js(http.get方法)創建REST API請求,但不是來自Angular的資源?爲什麼我可以從瀏覽器中創建REST API請求,但不能從Angular的資源中創建?
錯誤消息的片段是:
XMLHttpRequest cannot load http://example-of-external-api-site.com
Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
Origin 'http://localhost' is therefore not allowed access.
之前問這個問題,我嘗試看看CORS的定義。根據我的理解,我可以理解爲什麼它不允許我從Angular的資源中提出的請求,因爲它來自不同的域。但是,我的瀏覽器/郵遞員/ Node.js應用程序是不是來自不同的域?
請幫我回答這個問題,我真的不能明白爲什麼..
你能改述這段文字嗎?當通過$ http.get()訪問一個uri時,你通過在瀏覽器的呈現內容中利用XMLHttpRequest的ajax調用來請求來自除託管AngularJS內容的域之外的資源。當您這樣做時,您必須提供一個CORs標頭,該標頭與服務器上的白名單相匹配,並符合每個瀏覽器的安全限制。我在做一個假設,當我做$ http.get時,我正在從託管我的AngularJS內容的域請求資源。 – kelvien
根據您發佈的錯誤消息,您的假設不正確。您正在通過「XMLHttpRequest」在'http:// example-of-external-api-site.com'上請求資源,因此是CORs問題。如果您始終通過相對路徑請求,則只能確保從託管您的內容的相同域請求資源。 –
我通過XMLHttpRequest從我的域請求資源到'example-of-external-api-site.com'來理解CORS問題是如何存在的。我想澄清的是,除了託管您的AngularJS內容以外的其他域名的措辭' – kelvien