什么是同源策略
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