1. 场景

luiliuliu为 Java 项目,打包成 war 放置在 tomcat 运行,端口 9090;

Web 前端为 Vue 工程,SPA 一次加载页面资源,数据通过 vue-resource 向后端取数据,后端路径在开发环境已经映射为http://localhost/web/

如果简单使用反向代理,会导致后端设置的 cookie 路径多了一条luiliuliu,由于 cookie 的安全设置,不同来源前端请求是取不到这样的 cookie

2. 解决

1
2
3
4
5
6
7
8
9
location /web/ {
proxy_pass http://127.0.0.1:9090/luiliuliu/;
proxy_cookie_path /phonecook/ /; # 重写路径

proxy_set_header Host $host;
proxy_set_header Remote_Addr $remote_addr;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

去掉cookie的路径

1
Set-Cookie:JSESSIONID=13C147CE3B1105465BC5CED280EF364C; Path=/luiliuliu/; HttpOnly

变成

1
Set-Cookie:JSESSIONID=5B247D5F4DDC0CE2BE8458D0F1C037CA; admin=adminadmin