2016-07-04 81 views
3

我確信我並不是唯一一個在使用API​​/CORS插件瀏覽器或--disable-web-security標誌的同時對外部(甚至內部)API端點進行API調用的人。我使用這個插件來製作Google地圖相關的API調用。但在同一應用程序中,ParseSDK API調用不需要CORS--disable-web-security標誌。CORS插件/ --disable-web-security如何在瀏覽器上工作?

我的問題是:爲什麼這些端點的行爲不同,CORS插件如何解決問題(即使我們無法控制這些API)?

在此先感謝。

回答

2

那麼,該插件的作用是非常不負責任的;它實際上禁用了相同的原產地策略,該原則強制特定原產地的網站只能向該原產地提出請求。

相同的原產地策略實際上只是防止網站讀取GET/POST請求的響應,請求本身是由於其認爲保存而產生的。

隨着時間的推移,這個良好的安全功能成爲一種負擔,人們使用JSONP等變通方法。

所以我們得到了一個新的,標準化的方式來訪問外國血統:

CORS(跨來源資源共享)是一種機制,允許Web服務器指定另一個起源允許訪問其內容。這通過Access-Control-Allow-Origin: example.com完成,它允許example.com訪問響應,即使響應來自不同的來源。

Access-Control-Allow-Credentials: true也將允許憑據,其中包括cookie和HTTP基本身份驗證發送請求。

您還可以爲Access-Control-Allow-Origin: *指定通配符,該通配符允許所有網站訪問此響應。但是,當你這樣做時,必須指定Access-Control-Allow-Credentials: false,所以沒有憑據公開。

這是在互聯網上實現公共可訪問的AJAX API的唯一正確方法。

但是這個插件只是簡單地禁用同源策略完全這是極其危險

2

您發佈的鏈接(您是否閱讀了描述?)明確指定了擴展名的作用 - 它將Access-Control-Allow-Origin: *標題添加到所有響應中。這是一個CORS頭,通常是服務器發送的,用於通知瀏覽器您可以從任意源發出請求。

解析SDK可能在其服務器端支持CORS。

只是爲了您的信息,當大多數人說CORS時,他們並不是指瀏覽器擴展。他們指的是稱爲CORS的網絡標準。下面的文檔。

https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS

+0

很明顯。謝謝! –