遇到个小坑,印象中不是第一次遇到了,记录一下:前后端分离时前端、后端不在同一个子域,跨域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,没必要设置。