-
session数据是保存到服务端的,但是 sessionID是保存到 浏览器cookie里的。
-
登录成功之后,服务端保存 session数据,然后 sessionid 写入到cookie里,这里注意:
这个 sessionid 是 设置给 192.168.9.10:8000 这个域的; 因为同源策略 所以 192.168.9.10:9999 这个域的 js代码,是不能 读取和修改 这个sessinID的 cookie的。
默认情况下,192.168.9.10:9999这个域的 ajax请求 是 不会携带 192.168.9.10:8000 域的 cookie的,但是可以 通过 一些 配置 允许 携带 目标域的 cookie(携带 并不等于 读取写入,不违背同源策略) 。
总结:cookie随意传,但如果读不到session_id的cookie,请求就不带这个cookie到服务器。
总结 session_id只能在一个域中,在别的域读不到。这也验证 session不能跨域。
其实 前后端不分离的话(因为域相同)cookie存session_id前端可以读到,但 前后端分离(因为域不相同)cookie存session_id前端不可以读到。怎么办呢,你session_id跨域读不到,不用session了那就换成token吧
1.cookie存session_id,(前后端不分离)服务器有状态
2.cookie存token,(前后端分离)服务器无状态
前后端不分离cookie存session_id可以(服务器有状态:服务器存用户信息例子单点登录),前后端分离cookie存token可以(服务器无状态:服务器不存用户信息)
最后 前后端不分离用session, 前后端分离用token。反正都是放到cookie中。