1. 问题描述
同一套前端ERP程序,部署了多个账套。两个账套的协议、ip相同,端口不同。
http://xxx.xx.x.xxx:8080
http://xxx.xx.x.xxx:9201
当同一用户在同一浏览器(Chrome)打开这两个不同端口的程序进行操作时,出现表单提交错误、切换程序操作需重新登录等问题。
2. 排查过程
经排查,发现是出现了Cookie被覆盖的问题。排查过程如下:
- 登录
8080
后,获取到 CookiebeegosessionID=xxxxx1
。此时8080
标签页可与服务端正常通讯。 - 新开一个标签页,登录
9201
程序,获取到 CookiebeegosessionID=xxxxx2
。此时9201
标签页可以与服务端正常通讯。 - 切换到
8080
标签页, 此时与后端通讯,请求携带的 Cookie 变成了beegosessionID=xxxxx2
。服务端返回错误提示。
前端程序是没有对 Cookie 做任何操作的。说明在第二个标签页即 9201
登录后,第一个标签页 8080
的 Cookie 被覆盖了。
3. 相关知识
查找资料后,知道 Cookie 相对于LocalStorage 和 SessionStorage ,是不会对端口做区分的。