我想了解CORS。根據我的理解,它使您能夠限制哪些域可以訪問服務器上的資源。但是,這看起來並不像完整的故事。例如,我有一個沒有啓用CORS的Web服務。我無法通過jQuery從我的Web應用程序中訪問此Web服務(該應用程序在本地主機上運行)。不過,我可以打Postman的網絡服務。所以,我有點困惑。是否有一些額外的客戶端工作涉及到CORS?CORS - 它是客戶端,服務器端還是傳輸級別?
回答
這實際上有點不同。您的瀏覽器將阻止CORS請求,除非請求的來源(即引用網址域名)位於目的地的白名單中,或者目的地批准所有請求而不考慮來源。
在兩種情況下,所需要的報頭(訪問控制允許來源)加入它告訴它的確定將請求發送到目的地的瀏覽器。
這保證了人惡意離不開用戶不知情的情況發送請求到另一個域。
服務器負責報告允許的來源。 Web瀏覽器負責強制執行請求僅從允許的域發送。
CORS時未啓用瀏覽器將依靠same origin policy。瀏覽器將只允許對相同主機的請求作爲源。如果未明確允許來源,則會採用相同的來源政策。
除瀏覽器以外的HTTP客戶端不會使用相同的源策略或CORS。來自這些其他HTTP客戶端的請求沒有源。除非Postman桌面應用程序模擬瀏覽器,否則它將能夠向任何URL發出請求。需要
CORS和同源策略,因爲瀏覽器不會隱相信它訪問的網站。他們不保護原始網站,他們保護接收跨網站請求的網站。
如果沒有這些政策,一個簡單的腳本重複加載一個網站可以通過廣告網絡或腳本注入分佈,然後任何瀏覽器中加載腳本將有助於網站上的服務拒絕攻擊。使用CORS和相同的源策略,瀏覽器將限制此腳本的影響。
CORS舉例:
Web瀏覽器從www.example.com
加載頁面。該頁面包含一個腳本,用於向www.example.org
發送請求。請求的來源是www.example.com
。瀏覽器發出請求或發送OPTIONS
請求(預檢請求)。當www.example.org
的服務器收到來自www.example.org
以外的來源的請求時,它將以響應標頭Access-Control-Allow-Origin
作出響應,該響應標頭告知瀏覽器允許發出請求的原點。它也可以響應其他標題,如Access-Control-Allow-Methods
和Access-Control-Allow-Headers
,這些標題可以限制允許的請求的類型。當瀏覽器被告知什麼來源被允許時,它將阻止來自不允許來源的未來請求。
CORS是一個安全的東西嗎?如果Web瀏覽器負責強制該請求僅從允許的域發送,我很難將其視爲安全組件。 –
@ZachTempleton CORS是一種放鬆同一產地政策的方式。因爲瀏覽器不信任他們訪問的網站或他們加載的內容,所以使用相同的原產地策略。它可以防止一個網站惡意干擾另一個網站。 –
- 1. 節點:客戶端角服務還是服務器端對象?
- 2. NavigationService.Navigate是所有客戶端還是它發佈到服務器?
- 3. 是PhantomJS客戶端還是服務器端?
- 4. Ajax工具包驗證是服務器端還是客戶端?
- 5. REST API請求應該是客戶端還是服務器端?
- 6. actionscript是客戶端還是服務器端語言?
- 7. 在ASP中運行Word 2007時 - 它是服務器端還是客戶端?
- 8. XSS預防:客戶端還是服務器端?
- 9. 應該在服務器端還是客戶端訂購陣列
- 10. 表達式評估客戶端還是服務器端?
- 11. 時間檢查:服務器端還是客戶端?
- 12. Express + Jade渲染 - 客戶端還是服務器端?
- 13. 分頁:服務器端還是客戶端?
- 14. 標記格式:服務器端還是客戶端?
- 15. 應該在客戶端還是在服務器端處理OCR?
- 16. 格式HTML服務器端還是客戶端?
- 17. PHP變量和數組,客戶端還是服務器端?
- 18. 解析Google Maps API GeoCode - 服務器端還是客戶端?
- 19. 我應該做API請求服務器端還是客戶端?
- 20. 客戶端服務器文件傳輸
- 21. 客戶端 - 服務器(從服務器到客戶端的文件傳輸)
- 22. Web應用程序國際化,做它服務器端還是客戶端?
- 23. ViewModel類設計 - 它應該在服務器端還是客戶端?
- 24. 確定請求是來自服務器還是客戶端c#
- 25. 使用java套接字從服務器到客戶端的文件傳輸。錯誤在服務器端和文件傳輸到客戶端是空的
- 26. ASP.Net延遲,我該如何判斷它是客戶端還是服務器?
- 27. ASP.net C#代碼被認爲是服務器端還是客戶端?
- 28. Devexpress mvc擴展。無論這些擴展是服務器端還是客戶端?
- 29. 是在服務器端還是客戶端生成的會話ID?
- 30. Opa:它如何識別服務器端或客戶端腳本
簡單但很好的說明! –