Thinkphp5和Vue前後端分離的情況下共享驗證碼session
阿新 • • 發佈:2019-01-04
1、首先在Thinkphp5的應用配置檔案application/config.php下修改cookie配置項,讓二級域名共享cookie
//在cookie選項加入domain,配置域名
'cookie' => [
// cookie 有效域名
'domain' => 'example.com',
],
2、伺服器端響應頭配置
- 將響應頭設定成Access-Control-Allow-Origin:域名
- 響應頭設定Access-Control-Allow-Credentials:true,表示跨域時,允許cookie新增到請求中。
注:設定Access-Control-Allow-Credentials:true後,要將Access-Control-Allow-Origin指定到具體的域,否則cookie不會帶到客戶端。
header('Access-Control-Allow-Origin:https://www.example.com');//允許單個域名
header('Access-Control-Allow-Credentials: true');//支援cookie跨域
3、Vue中axios請求配置
XMLHttpRequest的withCredentials標誌設定為true,從而使得Cookies可以隨著請求傳送。因為這是一個簡單的GET請求,所以瀏覽器不會發送一個“預請求”。但是,如果伺服器端的響應中,如果沒有返回Access-Control-Allow-Credentials:
true的響應頭,那麼瀏覽器將不會把響應結果傳遞給發出請求的腳步程式,以保證資訊的安全
在main.js中配置axios
axios.defaults.withCredentials = true;//讓ajax攜帶cookie
至此,大功告成!其他地方無需配置