Ajax跨域post請求後端無法獲取登錄態原因及解決辦法

遇到個小坑,印象中不是第一次遇到了,記錄一下:前後端分離時前端、後端不在同一個子域,跨域post請求後端無法獲取登錄態。

原因

後端通過cookie驗證用戶是否登錄,跨域post不會自動攜帶上cookie,因此驗證失敗。

解決辦法

手動設置請求帶上cookie即可,支持版本:jQuery 1.5.1+:

$.ajax({
   url:'//xxx.37games.com/xxx',
   type:'post',
   dataType:'JSON',
   xhrFields: {withCredentials: true}, // 設置後,發送請求會帶上當前主域的cookie
   data:{
   ......
})

網上很多文章說要加上設置項crossDomain: true,其實是多餘的。可以參考下官網文檔中對於crossDomain的介紹,如下圖:
在這裏插入圖片描述
跨域時它的值默認就是true,沒必要設置。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章