同時服務端要返回以下相應頭才會允許跨域

Access-Control-Allow-Origin: http://localhost:8080
Access-Control-Allow-Credentials: true

Access-Control-Allow-Origin:允許跨域的域名,可以用 * 來表示所有域名都允許跨域。

Access-Control-Allow-Credentials:是否允許攜帶 cookie

注意: 如果要攜帶 Cookie,前端要在發起請求時設置 withCredentials 等於 ture

複雜請求

只要不滿足簡單請求都屬於複雜請求。

發送複雜請求時,瀏覽器會先發送一個預檢請求來檢測是否允許跨域,下面是預檢請求額外的請求頭信息。

OPTIONS /cors HTTP/1.1
Origin: http://localhost:8080
Access-Control-Request-Method: PUT
Access-Control-Request-Headers: custom-header

預檢請求即是一個 options 請求,

Access-Control-Request-Method:代表這次請求用的是什麼方法。

Access-Control-Request-Headers:代表這次請求攜帶了哪些額外的請求頭欄位。

如果伺服器允許跨域,則返回如下響應頭

Access-Control-Allow-Origin: http://localhost:8080
Access-Control-Allow-Methods: GET, POST, PUT
Access-Control-Allow-Headers: cunstom-header

Access-Control-Allow-Methods:允許跨域的請求方法

Access-Control-Allow-Headers:允許攜帶的額外的請求頭

瀏覽器就收到相應後,會檢測頭信息,如果伺服器允許跨域了,則會發出真正的請求。如果不允許跨域,則會在瀏覽器報錯。

2. nginx 反向代理。這要求我們請求的的介面地址跟訪問頁面的地址相同,這樣我們就不會發生跨域,然後再通過 nginx 配置代理規則。比如將 /api 開頭的地址統一指向後端介面。

如果感覺不錯,就點贊鼓勵一下吧~~~


當今cors的問題,已經不是前端的問題了,找後端或者運維吧


找後端啊,大點聲,聲音這麼小,你還想垮域。下一個


後端配

Cors 就好了 可以搜索一下 任何語言都支持的 這是蜢簡單快速的方式


推薦閱讀:
相关文章