文档章节

浏览器禁止cookie的会话策略

菜蚜
 菜蚜
发布于 2016/05/06 10:54
字数 471
阅读 25
收藏 0
我们知道一般情况下网站的会话状态都是由客户端的cookie和服务端的session来协作维持,那么如果客户端的cookie被禁用了,又该怎么处理呢?

刚刚试了下淘宝登录,看来没了cookie确实限制了很多啊。不过,为了发挥我们追求技术的精神,还是列一下一些解决方案吧。

1、使用url重写(前提是浏览器需要禁止cookie),即作为URL路径的附加信息

<a href='<%=response.encodeURL("http://caiya.me/")%>'>index</a>
//
<%response.sendRedirect(response.encodeRedirectURL("
URL重写有什么缺点: 

  对所有的URL使用URL重写,包括超链接,form的action,和重定向的URL。每个引用你的站点的URL,以及那些返回给用户的URL(即使通过间接手段,比如服务器重定向中的Location字段)都要添加额外的信息。 

  这意味着在你的站点上不能有任何静态的HTML页面(至少静态页面中不能有任何链接到站点动态页面的链接)。因此,每个页面都必须使用servlet或JSP动态生成。即使所有的页面都动态生成,如果用户离开了会话并通过书签或链接再次回来,会话的信息都会丢失,因为存储下来的链接含有错误的标识信息-该URL后面的SESSION ID已经过期了。

跳转结果:http://caiya.me/;jsessionid=F19C643CB07B167BE923ABEC5A3AEA78

2、作为查询字符串追加在URL后面

http://caiya.me/?jsessionid=F19C643CB07B167BE923ABEC5A3AEA78

3、表单隐藏字段

就是服务器自动修改表单,增加隐藏字段,以便表单提交时可以传回给服务器。(目前这种应用较少)

说明:jsessionid是tomcat容器默认的会话客户端标识,是可以通过tomcat配置更改的。

© 著作权归作者所有

共有 人打赏支持
菜蚜
粉丝 28
博文 76
码字总数 36288
作品 0
杭州
程序员
IE8浏览器无法保存Cookie的解决方法

使用IE8浏览器经常出现了无法保存Cookie的故障。每次打开网站需要重新登录,登录之后刷新页面也要重新登录,这给用户带来了麻烦。这主要是IE8的默认Cookie设 置有问题,禁止了Cookie。 我们可...

红薯
2010/01/27
4.5K
2
javaweb中ajax跨域访问实例

AJAX跨域解决方法 跨域,简单地理解就是因为浏览器基于安全的同源策略限制不同域名和协议之间的互相访问。 而AJAX的跨域请求,其实浏览器并没有限制不同域的网络请求,只是浏览器会基于请求返...

hello菜bird
2016/01/13
1K
2
制作安全网站的checklist

原作者charlee、原始链接http://tech.idv2.com/2008/04/19/secure-website-checklist/ fcicq最近在IPA上看到一篇安全相关的文章,它的最末尾有个checklist,于是催我把它翻译了。前几天比较忙...

晨曦之光
2012/03/09
58
0
Cookie和Session的工作原理及Cookie欺骗(一)

存在两种类型的cookie: Session cookies - these are temporary and are erased when you close your browser at the end of your surfing session. The next time you visit that particul......

EugeneQiu
2013/08/21
0
0
如何实现session共享

session被用于表示一个持续的连接状态,在网站访问中一般指代客户端浏览器的进程从开启到结束的过程。session其实就是网站分析的访问(visits)度量,表示一个访问的过程。 session的常见实现...

iphoenix
2016/08/09
55
0

没有更多内容

加载失败,请刷新页面

加载更多

EventBus原理深度解析

一、问题描述 在工作中,经常会遇见使用异步的方式来发送事件,或者触发另外一个动作:经常用到的框架是MQ(分布式方式通知)。如果是同一个jvm里面通知的话,就可以使用EventBus。由于Event...

yangjianzhou
16分钟前
2
0
OpenCV图像处理实例:libuv+cvui显示摄像头视频

#include <iostream>#include <opencv2/opencv.hpp>#define CVUI_IMPLEMENTATION#include <cvui.h>extern "C"{#include <uv.h>}using namespace std;#define WINDOW_NAM......

IOTService
23分钟前
1
0
openJDK之JDK9的String

1.openJDK8的String 先来看下openJDK8的String的底层,如下图1.1所示: 图1.1 底层上使用的是char[],即char数组 每个char占16个bit,Character.SIZE的值是16。 2.openJDK9中的String 图2.1...

克虏伯
24分钟前
1
0
UEFI 模式下如何安装 Ubuntu 16.04

作者:知乎用户 链接:https://www.zhihu.com/question/52092661/answer/259583475 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 针对UEFI模式下安装U...

寻知者
25分钟前
1
0
20180925 df与du命令、fdisk磁盘分区

df 命令 disk filesystem的缩写,查看已挂载磁盘的总容量、使用容量、剩余容量信息。 [root@centos01 ~]# dfFilesystem 1K-blocks Used Available Use% Mounted on/dev/sda3 27...

野雪球
54分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部