项目上线cookie携带问题
问题描述:
上线时,通过IP进行访问,没有丝毫问题,但是通过域名访问就出现了能成功登录,但是后续又会直接跳出去,说我没有登录。
问题分析:
第一步:考虑是不是cookie携带失败,确实失败了,当时就一直思考为什么无法成功携带cookie.
如果是这样的,不妨点开,看看自己的cookie看看

如上图,空空如也。
这时,就应该考虑cookie设置失败,这时我又点开了我的login请求,仔细观察响应请求。

看看你的第一个login请求,响应标头中,是不是有这样一个感叹号。
长话短说:这是由于浏览器为了防止跨站攻击,将sameSite设置为了lax,导致访问第三方时候,无法设置cookie
解决方案:
具体可以参考这个链接: samesite解决方案
方案一:后端将samesite设置为none,具体需要一个sessionconfig
方案二:使用Nginx使用代理,让前后端域名和端口保持一致(ps:可以参考鱼皮配置代理)
因为我一直想使用一下nginx,所以我就采用了方案二。
第一步:修改前端axios请求地址,让他向nginx服务器进行请求。
//使用Nginx反向代理
const myAxios = axios.create({
// baseURL: '/api',
baseURL: isDev==='development' ? 'http://localhost:7529/api' : 'http://api.tianzhao.icu/api',
timeout: 100000,
});
myAxios.defaults.withCredentials = true;//允许跨域携带cookie信息
第二步:修改nginx,让他接收到前端的请求后,将请求转发向真正的后端
server
{
listen 12345;
server_name 112.74.38.121;
index index.php index.html index.htm default.php default.htm default.html;
root /www/wwwroot/112.74.38.121/api-front/dist;
# 代理拦截,向真正的后端进行请求
location /api {
proxy_pass http://localhost:7529/api/;
}
}
评论
问答助学
相关内容
0个评论
全部评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
