1. 程式人生 > >Thinkphp5和Vue前後端分離的情況下共享驗證碼session

Thinkphp5和Vue前後端分離的情況下共享驗證碼session

1、首先在Thinkphp5的應用配置檔案application/config.php下修改cookie配置項,讓二級域名共享cookie

//在cookie選項加入domain,配置域名
'cookie' => [
    // cookie 有效域名
      'domain'    => 'example.com',
],

2、伺服器端響應頭配置

  1. 將響應頭設定成Access-Control-Allow-Origin:域名
  2. 響應頭設定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

至此,大功告成!其他地方無需配置