返回信息流有一个很菜的问题啊。当浏览器禁用cookie之后,可以利用url重写的方式来使用cookie机制,把sessionid写入url中。但是有一点我想不通,客户端在发送请求的时候,是怎么知道sesisonid是多少的呢? 或者说是从哪里拿到sessionid的 呢?
这是一条镜像帖。来源:北邮人论坛 / java-script / #5395同步于 2020/7/21
该镜像源已超过 30 天没有更新,可能在源站已被删除。
JavaScript机器人发帖
【问题】当浏览器禁用cookie之后
WHSASF
2020/7/21镜像同步12 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
【 在 tychenjiajun 的大作中提到: 】
: 瞎猜一下:重定向到带sessionId的url
嗯?那后台怎么判断该重定向到哪个sessionid呢? 如果请求的url中没有sessionid的话,
sessionid是跟浏览器相关的,在不关闭整个浏览器的情况下,重复打开这个网页的时候,后台获取的sessionid是不变的
至于如何获取sessionid,各自语言都有各自的方法
你只要在后台有个session的储存机制,各自语言一般都会有现成的模块,每次打开网页的时候,后台判断一下这个session有没有存储记录,然后根据存储记录来处理就行了,后台记录session的机制一般都有个超时时间自动删除,比如20分钟你的浏览器即使没有关闭过,再打开这个网页也同样查不到这个session记录,需要重新登陆之类的,如果是主动退出登录,可以在该session记录上做个登出的标记
所以是不需要在url里包含sessionid的,你如果需要在关闭浏览器之后再打开这个网页还要保留之前的用户信息,那就只能使用cookie,因为session只能在不关闭浏览器的情况下保持不变
【 在 dahai 的大作中提到: 】
: 所以是不需要在url里包含sessionid的,你如果需要在关闭浏览器之后再打开这个网页还要保留之前的用户信息,那就只能使用cookie,因为session只能在不关闭浏览器的情况下保持不变
如果url里面不包含sessionid,后台怎么判断client是谁?
第一次请求服务器的时候,重定向到带sessionid的URL,替代Set-Cookie的行为。重定向后的那个页面的所有链接和请求都拼接了同样的sessionID,这样后续用户正常操作的时候,比如发表单和点链接,URL就已经带了sessionId了。如果用户自己在浏览器地址栏输入地址,不带session id的话,就认为是新的session,重复上面步骤。
【 在 WHSASF (海生) 的大作中提到: 】
: 嗯?那后台怎么判断该重定向到哪个sessionid呢? 如果请求的url中没有sessionid的话,
我上面说的很清楚了,不管你的url是什么,只要你的浏览器没有重启,同域名发送给后台的任何请求sessionid都是一样的
a.com/1和a.com/2?b=3对于后台来说都是同一个session
后台提取方法你要去查你所用语言或者使用的中间件,一般来说后台处理请求都会有req和res两个对象,session信息就包含在req里
session信息是浏览器帮你完成的,浏览器自动生成并添加到请求的相关协议字段,不需要你去干预,你只需要在后台把session信息提取出来并建立一个存储机制即可,一般来说后台都会在用户登陆时把session和用户信息做一个关联,获取到请求之后根据session信息就可以对应到具体用户,所以没有人会在每次请求中携带用户信息,那样不安全,而且两个浏览器通过一个用户登陆时也没办法进行区分,根据session关联用户的方式就可以进行有效区分