遇到个小坑,印象中不是第一次遇到了,记录一下:前后端分离时前端、后端不在同一个子域,跨域post请求后端无法获取登录态。
原因
后端通过cookie验证用户是否登录,跨域post不会自动携带上cookie,因此验证失败。
解决办法
手动设置请求带上cookie即可,支持版本:jQuery 1.5.1+:
$.ajax({url:'///xxx',type:'post',dataType:'JSON',xhrFields: {withCredentials: true}, // 设置后,发送请求会带上当前主域的cookiedata:{......})
网上很多文章说要加上设置项crossDomain: true
,其实是多余的。可以参考下官网文档中对于crossDomain
的介绍,如下图:
跨域时它的值默认就是true,没必要设置。