前端分离之后通过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/ /;
}