问题现象:
项目A和项目B,部署在同一台服务器下,使用相同的域名,他们的访问方式类似于下面这样:
http://test.domain.com/A/index.jsp
http://test.domain.com/B/index.jsp
A项目中有个链接到B项目的链接(用户名和密码放在参数里,到B项目中的方法中验证,组装user并设置到session里),
当在A项目中点击了链接后会将B的页面内嵌在A系统中,再次点击A项目的其他菜单时退出到登录页面
问题解决之前做的内容:
(本人是flask初学者)
1.更改项目路径:
百度搜到说cookie不区分端口号,可以根据请求路径不同,cookie存储的内容不同,但是我更改了请求路径,没用
2.设置A,B两个网站的cookie为不同存储位置:
百度了半天说通过js能更改路径,可能是技术不精,无济于事
3.百度说更改sessionid,找了半天,不知道说的是什么
经过冷静分析发现了问题的原因:
问题原因:
先看A网站和B网站的再浏览器中的cookie的key值,可以通过EditThisCookie这个谷歌插件去看(不懂的和不会使用的可以去百度一下),访问这A、B这两个网站,查看A和B的cookie的key都为session
这是因为什么呢?
在flask的配置中,有这么几个配置项:
app.config['SESSION_COOKIE_NAME'] = ''
'SESSION_COOKIE_NAME': 'session', # 默认
'SESSION_COOKIE_DOMAIN': None,
'SESSION_COOKIE_PATH': None,
'SESSION_COOKIE_HTTPONLY': True,
'SESSION_COOKIE_SECURE': False,
'SESSION_REFRESH_EACH_REQUEST': True,
'PERMANENT_SESSION_LIFETIME': timedelta(days=31),
看到了吗,*‘SESSION_COOKIE_NAME’*的值默认为session,那么我们接下来的任务就是去更改他默认的值,在我们的两个项目中,例如A项目添加下面这样的配置:
app.config['SESSION_COOKIE_NAME']="sessionA"
在B项目中添加:
app.config['SESSION_COOKIE_NAME'] = 'sessionB'
这样就可以了,sessionA和sessionB这两个名字是我自己定义的,大家可以根据自己的特点去定义,只要两个名字不一样就可以