遇到個小坑,印象中不是第一次遇到了,記錄一下:前後端分離時前端、後端不在同一個子域,跨域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,沒必要設置。