前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >经典面试题-描述Cookie和Session的作用,区别和各自的应用范围,Session工作原理

经典面试题-描述Cookie和Session的作用,区别和各自的应用范围,Session工作原理

作者头像
cwl_java
发布2019-11-20 14:48:45
2.2K0
发布2019-11-20 14:48:45
举报
文章被收录于专栏:cwl_Javacwl_Java

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/weixin_42528266/article/details/103135442

实现sessionid的保存和传输。是cookie,将http的请求变得有状态。session的实现是web服务器的事情,不过很显然默认是利用会话cookie,也就是存放在浏览器内存里的那种cookie来实现的,在cookie里只是存放了SessionID,然后在服务器上建立了一张表,对应客户端的SessionID。这张表是存放在服务器上的进程中的,也就是服务器的内存里,也就是Application里。当客户端请求服务器的时候,如果服务器发现这是一个新的请求,就会分配给他一个SessionID,也就是在浏览器写入一个sessionID的cookie。你可以试一下,在你请求过一次服务器之后,在服务器遍历客户端所有的cookie,就会发现这个叫做SessionID的cookie。

但是,这只是session实现sessionid状态记录的一种方法,如果客户端浏览器禁用了cookie,很多网站还是可以正常登录,还是可以正确识别浏览器的身份,这就是通过url重写的方式,每次交互都携带sessionid的信息。

还有一种方式,就是表单重写,有些服务器会在表单中增加隐藏域,来回传递sessionid。

所以在了解了这个session的原理之后我们可以自己来造一个自己的session,可以使用cookie,也可以使用url重写方式,也可以使用表单方式。

session的结束问题

还有知道了session的原理就会明白一个session会话如何结束,除非服务器端可以清除一个session会话,客户端是没有能力清除session的,关闭浏览器的时候并不能够结束当前的会话(忽略浏览器关闭事件),在不依赖于cookie的session中最明显,你可以记下你的sessionID那串字符串,关闭浏览器,打开,把sessionID自己替换,你就可以恢复刚才的会话了。所谓的20分钟session超时,是服务器每隔20分钟对于不活动的session清除而已。

还有要指出的是依赖于cookie的session是存放在浏览器内存中的,所以一个浏览器的进程就会产生一个session,可以通过任务管理器查看进程,对于IE来说,只有双击桌面上的浏览器快捷方式才能新启动一个进程的,当然其他类似启动iexplorer.exe的行为也可以

到这里你会发现在依赖于cookie的session中,是需要浏览器的支持的!

对于js的ajax请求,确切的说是xmlhttp这个组件发送的http请求,虽然是你使用js的代码自己制造的,但是依然是借助于浏览器发送的,所以可以获得session。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-11-19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • session的结束问题
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档