前端跨域怎麼解決?
同時服務端要返回以下相應頭才會允許跨域
Access-Control-Allow-Origin: http://localhost:8080
Access-Control-Allow-Credentials: trueAccess-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-headerAccess-Control-Allow-Methods:允許跨域的請求方法
Access-Control-Allow-Headers:允許攜帶的額外的請求頭
瀏覽器就收到相應後,會檢測頭信息,如果伺服器允許跨域了,則會發出真正的請求。如果不允許跨域,則會在瀏覽器報錯。
2. nginx 反向代理。這要求我們請求的的介面地址跟訪問頁面的地址相同,這樣我們就不會發生跨域,然後再通過 nginx 配置代理規則。比如將 /api 開頭的地址統一指向後端介面。
如果感覺不錯,就點贊鼓勵一下吧~~~
當今cors的問題,已經不是前端的問題了,找後端或者運維吧
找後端啊,大點聲,聲音這麼小,你還想垮域。下一個
後端配
Cors 就好了 可以搜索一下 任何語言都支持的 這是蜢簡單快速的方式
推薦閱讀: