同IP不同端口导致cookie冲突的解决方法

同IP不同端口导致cookie冲突的解决方法

一、项目背景

1、技术栈

springboot、springcloud、vue、gateway、springmvc、k8s、jwt等

2、问题描述

一个k8s集群服务器上搭建了多个项目,端口不一样,同时启动访问时token丢失。如:A,B两个服务,在浏览器中登录访问A后,当前打开的浏览器上在开一个选项卡访问B服务后,回过来点击访问A时token丢失,需要重新登录A才可以访问。经过资料查找,发现问题是因为: IP相同认为是同一个域,接收了B的token,把对应的cookie内容覆盖了,其中包括jsessionid,造成A的token丢失。如果IP不同,则不会发生这个问题。IP相同的两个cookie是一样的,而不幸的是token就保存在cookie中,这样先访问A,再访问B的时候,B的token会覆盖A的token。这个事情没办法解决,所以你不要搞两个端口,最好是搞两个IP。原来都是cookie惹的祸,它不会区分端口,造成这多个站点不断的后来的覆盖前面的,从而造成cookie的丢失。

二、解决办法

直接在前端把A、B两个项目的token的名称改成不一样,如下:

#A 项目:
const TokenKey = 'Admin-Token'

const ExpiresInKey = 'Admin-Expires-In'

#B 项目:
const TokenKey = 'Admin-B-Token'

const ExpiresInKey = 'Admin-B-Expires-In'
上一篇:python requests发起请求,报“Max retries exceeded with url”


下一篇:c++病人排序问题