通俗讲解cookie-session机制
可以通过js获取session的值吗?
可以通过js获取session的值吗?
Session是一种会话保持机制,和Cookie一样,只不过Session是保存在服务器端的。而JS在客户端运行时默认是无法直接获取Session的,但我们可以通过其它方式变通的让JS能获取到Session的值。
Session机制我们知道HTTP协议本身就是无状态的协议,默认情况下即使是同一个客户端发出的多次请求,也会被当成不同客户发出的请求(因为服务器端是无法识别哪些请求是来自同一个客户端发出的)。这种特性对于WEB应用而言是存在很大问题的,因为很多业务是必须要会话机制的,所以才有了Cookie Session机制。基于Cookie Session机制,在一定时间内同一客户端发出的多次请求服务器都会标识为同一客户的请求,因为每个请求都有一个head头信息。
通过JS获取Session的方案虽然JS无法直接获取Session的值,但我们可以在动态页面中调用Session的值,然后用JS通过Ajax调用此动态页面,这样就变相的通过JS获取到了Session的值。
以上就是我的观点,对于这个问题大家是怎么看待的呢?欢迎在下方评论区交流 ~ 我是科技领域创作者,十年互联网从业经验,欢迎关注我了解更多科技知识!
首先要明白一点,session是存储于服务器端的。因此想要获取session必须是服务器端语言。如果楼主说的是指运行于网页端的js当然不能获取session。但是别忘了,还有nodejs,如果使用nodejs作为服务器端运行的语言,此时服务器端的js当然就可以获取session的。
js不能直接获取session的值,但是可以操作cookies。
session和浏览器之间通过一个叫sessionID的cookies关联起来。通过操作这个cookies,可以间接操作session。
其实你的需求就是错的,理解错了session和cookies的区别和关系
浏览器关闭,session有没有销毁,为何找不到session了?
Session是保存在服务器端的,浏览器是通过Cookie的SessionID来标识Session的。找不到Session,要看Cookie的设置是浏览器进程内的还是有有效期的。浏览器进程内的,关闭浏览器是会消失的,设置有效期的,如10天失效,才能保证浏览器关闭SessionId存在。
另外,Session占用服务器内存,如果内存不足,则会销毁Session的