日期:2014-05-18  浏览次数:20633 次

关于session和request 到底用谁?
今天和一个同学讨论如题的问题,他说request安全,资源消耗低,可以把request一直转发,就能起到不用session的作用。
我也知道这么做不合理,显的request很臃肿而且容易出问题,但是一时又想不出会出如何的问题,请大家帮忙分析下~ 学习了。

------解决方案--------------------
session 一直可以得到的原理是在每次request 的时候,都会带一个session ID。然后根据此ID 在server 端内存中找到此用户Session 中内容。这种方法问题是,服务器保存状态,当此服务器Down 后,该服务器上所有Session 丢失。
request 上存状态不可取,首先request 的URL 是有长度限制的,最长似乎是4086 个字节(不确定,忘了),这就限制了Session 存放内容的空间。另外如果不用https 加密,那么你每次请求的内容都可以被任何人sniffer 到,非常不安全。
当然,现在有很多网站,包括一些大型网站,其实是把Session 的内容加密放到Cookies 中的,这是一种方式,但仍然有大小限制。不过采用这种Session 方式,在服务器端的部署就简单很多,这就是传说中的SNA(shared nothing architecture)的一种实现方式。具体如何存放,自己选择吧
------解决方案--------------------
探讨
session是放在request里面来进行传输的么? 就是说session的大小是受到request的限制的?

------解决方案--------------------
session在显示用户登陆退出的时候比较好,登陆时因为所有网页都能访问到它,所以可以随时检测用户的状态,比如说下载东西就需要用户在登陆状态才行,当你不用session的时候,比如说退出登陆的时候,直接来个释放就OK了,那么所有网叶的该用户状态都为NULL了,这样比起来比request好多了,不过session确实占资源。。。。。