Angular使用反向代理调试时改变Cookie的路径

由于angular在调试时,是使用反向代理的方式访问后端,那么就可能出现cookie路径不同的状况,导致session无法正常起作用。

例如angular端请求的地址为http://localhost:4200/api/getName,反向代理到http://localhost:8080/backend/getName,由于端口号后的第一级路径不同,即"api"与“backend”不同,就出现了cookie路径不同,session无法记住设置的值。

这时就需要去改写Cookie的路径了。在Nginx中关于Cookie路径改写的方法很容易搜索到,但是Angular中并没有找到相关资料。而Vue的这方面资料是能搜到的,Vue和Angular这方面配置是一样的。

所以要解决很简单,只需要在反向代理配置文件中(我的是proxy.config.json),增加"cookiePathRewrite"配置:

 "/api":{
        "target":"http://127.0.0.1:8080/backend",
        "secure": "false",
        "pathRewrite": {
            "^/api": ""
        },
        "changeOrigin": true,
        "cookiePathRewrite": {
            "/backend": "/api"
          }
    }

将两个路径添加上去就可以了,但是要注意key和value的顺序不能弄反。

不仅是端口号后第一级路径不同才会产生cookie路径不同,第二级、第三级等都会导致同样的问题。所以一般情况下,最好保证请求URL和后端URL,只有前缀不同,后面路径相同。

还有种情况,如果请求的URL为"/api/getName",对应后端URL为"/project/backend/getName",就可以将"/api"和"/project/backend"视为第一级路径,进行反向代理,这样后面的路径就会一样了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值