跨源資源共享(CORS)


什么是同源策略

https://www.cnblogs.com/poloyy/p/15345184.html

 

同源策略帶來的跨域問題

  • 在前后端分離的項目中,前端和后端如果部署在同一個服務器,那么運行端口肯定不一樣
  • 當前端發起請求到后端,這個時候發送的首先是 option 請求,而不是真正的請求
  • 后端拿到 option 請求后先判斷有沒有資格(權限),如果沒有就會報錯;如果有,則會繼續請求你真正發起的請求
  • 一句話總結:在瀏覽器中運行的前端編寫了和服務端通信的 JavaScript 代碼,而服務端與前端處於不同“源”的情況

 

跨域的解決方法

  • 因為瀏覽器同源策略,也正是有了跨域限制,才使我們能安全的上網
  • 但是在實際開發中,有時候需要突破這樣的限制,所以就誕生了 CORS

 

CORS

  • Cross-Origin Resource Sharing 跨域資源共享
  • 是一種基於 HTTP Headers 的機制,該機制通過允許服務器標示除了它自己以外的其它origin(域,協議和端口),這樣瀏覽器可以訪問加載這些跨域資源
  • CORS 還通過一種機制來檢查服務器是否會允許要發送的真實請求,該機制通過瀏覽器發起一個到服務器托管的跨源資源的"預檢"請求
  • 預檢中,瀏覽器發送的 Headers 中標示有 HTTP 方法和真實請求中會用到的頭

 

詳細

  • CORS 標准新增了一組 HTTP Headers 字段,允許服務器聲明哪些源站通過瀏覽器有權限訪問哪些資源
  • 另外,規范要求,對那些可能對服務器數據產生副作用的 HTTP 請求方法(特別是 GET 以外的 HTTP 請求,或者搭配某些 MIME 類型的 POST 請求),瀏覽器必須首先使用 OPTIONS 方法發起一個預檢請求(preflight request),從而獲知服務端是否允許該跨源請求
  • 服務器確認允許之后,才發起實際的 HTTP 請求
  • 在預檢請求的返回中,服務器端也可以通知客戶端,是否需要攜帶身份憑證(包括 Cookies 和 HTTP 認證相關數據)

 

更多詳細教程可參考

還是很有必要看完一遍的

https://developer.mozilla.org/zh-CN/docs/Web/HTTP/CORS

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM