配置帶cookie的跨域請求

2021-09-11 03:09:20 字數 1098 閱讀 8467

前端vue,後端伺服器nginx,後端應用php

其實只要設定header("access-control-allow-origin:*");就可以讓其他域下的頁面訪問本網域名稱下的介面,不配置的話請求會被阻止,雖然php後台已經接收並處理了請求,瀏覽器也已經接收到返回資料,但是chrome瀏覽器接收到返回資料後並不會傳遞給頁面,而頁面會收到請求失敗的返回,也就是跨域。導致頁面不能正常接收跨域請求的返回。

有的時候需要傳cookie,而不是以引數的形式傳遞,不跨域的情況下cookie會自動攜帶,所以需要讓後台接收前端傳遞的跨域cookie。不然還是會向上述一樣,後台接收並處理了請求,瀏覽器接收到了請求,但是瀏覽器不會把返回資料傳遞給頁面

配置如下

var url = this.url

this.axios.post(url,

postdata,

).then(res=>).catch(error=>)

或者在main.js中import axios後加入

axios.defaults.withcredentials = true
這樣就不用給每個axios.post加引數了

header("access-control-allow-origin:");

header("access-control-allow-credentials:true");

如此兩者配合使用,可以是跨域的請求,攜帶當前域和跨域可訪問的cookie

a.example.com下的頁面,訪問b.example.com的介面,可以把cookie設定到.example.com的domain下,注意是點開始的,不要忘記了.點。這樣b.example.com就允許了a.example.com的訪問,並且支援cookie的攜帶和獲取

nginx中可以直接允許所有origin跨域

但是這樣可能會與**中的header()造成衝突,

跨域請求帶cookie的解決方案

參考 cookie一般情況下是沒法跨域的,甚至post請求一般情況下都是無法跨域的。但經過特殊處理後就可以了,這個處理需要客戶端伺服器的配合。一些請求可以通過jsonp的方式來實現跨域,但如果是非冪等的請求,還是需要post的。處理如下 伺服器端設定 header access control al...

跨域請求攜帶cookie

之前寫過乙個第三方登入的方案,就是利用tomcat session和cookie配合的方式來完成第三方跨域登入。在時間做的過程中碰到了乙個問題,就是在回寫瀏覽器的cookie時發現一直寫不進去,針對這個問題做了仔細的檢查,原來的採用ajax傳送跨域請求的時候預設是不會攜帶cookie的,如果需要允許...

跨域請求傳遞Cookie

通過cors跨域時,瀏覽器不會自動帶上cookie。想要傳遞cookie,需要客戶端與服務端共同設定。服務端需要設定 access control allow origin 該欄位表明服務端接收哪些網域名稱的跨域請求,如果值為 號,表示接收任意網域名稱的跨域請求。當需要傳遞cookie時,acces...