保存Session ID 的几种方式

1 保存session ID 的方式可以采用cookie,这样在交互过程中浏览器可以自动的按照规则把这个标识发送给服务器
2 由于cookie可以被人为的禁止,必须有其他机制在cookie被禁止时依然能够把session ID传递回服务器,经常用的一种技术叫URL重写,就是把session ID附加在url路径后面,附加有2种方式
a,作为url路径的附加信息 http://…../xxx;jsessionid=ByOK3vjFD75aPnrF7C2H
b,作为查询字符串附加在url后面 http://……?……&jsessionid=ByOK3vjFD75aPnrF7C2H
要想要网络在整个交互过程中始终保持状态,必须在客户端所有可能发送请求的路径后面都添加上这个session ID
3 还有一种叫做表单隐藏字段,在服务器端会自动修改表单,添加一个隐藏字段(隐藏字段的value如果不放在表单里再好好搞一下可以把抓取页面的人恶心死)以便用户在提交表单时,把session ID传回服务器

session ID什么时候创建呢?
错误的以为是:有客户端访问时就创建,我感觉没必要 有些用户只是上来看看有必要给他创建session么!?浪费资源,当服务器某个server(如servlet)调用HttpServletRequest.getSession(true)这样的语句时才会创建session(一般是要有一些业务需求了)

URL重写的弊端:
对所有URL都要重写啊,包括超链接,form,action,重定向的url,每个站点引用你的url,返回给用户的url(即使通过间接手段,比如response.headers中的Location字段)都要添加额外的字段,艹,麻烦死 !
这样搞你的站点不能包含任何的静态页面(至少不能有链接到动态页面的链接),每个页面必须由servlet或jsp
(这里不知怎么说好,jsp编译了也是servlet啊)动态生成,即使所有都动态生成了,如果用户离开会话(例如我出去上了个厕所,session超时了)从收藏夹或书签或链接中找回来,这是会话信息已经没了,因为存储下来的链接有错误的标识信息-Session ID已经过期啦!

表单隐藏字段的弊端:
你的站点每个页面必须是由表单提交而生成的吧!你单击一个超文本链接肯定是不会有表单生成的,不能提供会话跟踪啊

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值