前端分离之后通过nginx进行转发到接口,但是接口无法获取到cookies。
这个是因为后端创建的cookie和前端的地址不一致。而浏览器限制了,如果cookies的path与当前页面的地址不一致,会无法生效。
解决方式:在nginx中配置proxy_cookie_path对cookies的path进行修改。
proxy_cookie_path 语法
proxy_cookie_path source target;
- source 源路径
- target 目标路径
这个指令是从 1.1.15 版本开始引入的.
可以设置被代理服务器响应中的 Set-Cookie 这个路径属性. 假被设代理服务器返回的 Set-Cookie 头的 path 字段的属性是 path=/two/some/uri/.
那么这个指令 proxy_cookie_path /two/ /; 会将这个属性重写为 path=/some/uri/
此配置可以配置多个,主要看后端返回的path是什么,有哪些。可以通过开发者模式中查看对应接口的cookie页中对应cookie的path
完整配置:
location /api/ {
proxy_pass http://192.168.1.1:8081/base/api/;
proxy_cookie_path /base/api/ /;
proxy_cookie_path /api/ /;
}
当前端与后端分离并通过nginx转发请求时,可能出现接口无法获取cookies的情况。这通常是由于浏览器限制,cookie的path与请求页面地址不匹配。解决方法是在nginx配置中使用proxy_cookie_path指令重写cookie的path。例如,配置`proxy_cookie_path/base/api//;`和`proxy_cookie_path/api//;`来匹配后端返回的path,确保cookie生效。
1107

被折叠的 条评论
为什么被折叠?



