文档章节

浏览器禁止cookie的会话策略

菜蚜
 菜蚜
发布于 2016/05/06 10:54
字数 471
阅读 25
收藏 0
点赞 1
评论 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配置更改的。

© 著作权归作者所有

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

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

红薯 ⋅ 2010/01/27 ⋅ 2

javaweb中ajax跨域访问实例

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

hello菜bird ⋅ 2016/01/13 ⋅ 2

制作安全网站的checklist

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

晨曦之光 ⋅ 2012/03/09 ⋅ 0

如何实现session共享

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

iphoenix ⋅ 2016/08/09 ⋅ 0

关于tomcat和sessionCookieName和SESSION_PARAMETER_NAME以

关于tomcat和sessionCookieName和SESSIONPARAMETERNAME以及disableURLRewriting参数 关于session和cookie参考: http://www.blogjava.net/freeman1984/archive/2011/09/02/357833.html http:......

闪电 ⋅ 2015/12/04 ⋅ 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

(一)cookie和seesion的工作原理

Cookie和会话状态的 工作 原理及Cookie欺骗 session是一种保存上下文信息的机制,它是针对每一个用户的,变量的值保存在服务器端,通过SessionID来区分不同的客户,session是以Cookie或URL重...

你来人间一趟 ⋅ 2013/04/08 ⋅ 1

cookie 和session 的区别详解

这些都是基础知识,不过有必要做深入了解。先简单介绍一下。 二者的定义: 当你在浏览网站的时候,WEB 服务器会先送一小小资料放在你的计算机上,Cookie 会帮你在网站上所打的文字或是一些选...

LCZ777 ⋅ 2014/08/26 ⋅ 0

浅谈 Cookie 与 Session 的区别

1、cookie机制 Cookies是服务器在本地机器上存储的小段文本并随每一个请求发送至同一个服务器。IETF RFC 2965 HTTP State Management Mechanism 是通用cookie规范。网络服务器用HTTP头向客户...

xrzs ⋅ 2014/08/20 ⋅ 8

HttpClient第三章 HTTP状态管理

原始的HTTP被设计成无状态的面向请求响应的协议,它并没有为基于跨几个逻辑相关的请求/响应交换的有状态会话提供所需的功能。但是随着HTTP协议越来越流行并且被应用,越来越多的系统开始用它...

zhuwensheng ⋅ 2016/08/07 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

apollo配置中心的学习笔记

公司现在配置文件太多了,导致配置文件修改起来还是非常麻烦的。在boss(业务运营支撑系统)中,配置文件是存放在jar包的,通过应用jar包来引用配置文件(区分不同环境)。这种方式虽然能够满足...

miaojiangmin ⋅ 5分钟前 ⋅ 0

Jena增删改查AP

插入、更新数据 public static void insert(){ String query = "PREFIX book: <http://www.book.com/jinyong/> \n" + " INSERT DATA \n" + ......

Vincent-Duan ⋅ 6分钟前 ⋅ 0

springMVC之与json数据交互方法

因为我也要返回json数据。所以需要这个注解@ResponseBody,把Java对象转换成json字符串 注意: 1、@RequestBody不能省,因为前台发过来的数据是json数据,得用这个注解去解析该怎么接收这些数...

颖伙虫 ⋅ 10分钟前 ⋅ 0

用实例域代替序号(31)

1、许多枚举天生就与一个单独的int 值相关联 ordinal 方法,返回枚举常量在类型中的数字位置 下述,枚举修改很不方便,不好维护 永远不要根据枚举的序数导出与他相关联的值 而是将他保存在一...

职业搬砖20年 ⋅ 12分钟前 ⋅ 0

并发编程---ConcurrentHashMap源码解析

ConcurrentHashMap是java中为了解决HashMap不能支持高并发而设计的新的实现。 ConcurrentHashMap的类结构 public class ConcurrentHashMap<K,V> extends AbstractMap<K,V> implements C......

千古一梦888 ⋅ 15分钟前 ⋅ 0

微服务 WildFly Swarm 简介

我们将看到的最后一个Java微服务框架是一个相对较新的场景,它利用了 JBoss WildFly 应用服务器中已试过且受信任的 JavaEE 功能。WildFly Swarm 是 WildFly 应用服务器的一个完整的拆下来的组...

woshixin ⋅ 19分钟前 ⋅ 0

android apk 瘦身

头条APK瘦身之路 随着版本迭代,功能增加安装包体积也会慢慢增大。 今日头条576版本APK达到了25M,通过一系列的优化,到目前的607版本为12M。本文主要是介绍头条APK瘦身中用到的一些方法。 ...

GoldenVein ⋅ 23分钟前 ⋅ 1

mac机器学习开发环境部署及helloworld

一、下载并安装Anaconda2.7 https://repo.anaconda.com/archive/Anaconda2-5.2.0-MacOSX-x86_64.pkg 路径:/Users/shijun/anaconda2 二、运行Anaconda Navigator -> Environments -> base(ro......

八戒八戒八戒 ⋅ 34分钟前 ⋅ 0

关于日常开发的经验总结(Java),持续更新中

常量尽量使用枚举来表示,这样表现力会很强,因为枚举比一个常量类要有更多的扩展性 方法的入参和出参尽量不要使用Map,因为Map会让调用者感到迷惑,他不知道你里面装的什么,面向对象的开发...

小99 ⋅ 35分钟前 ⋅ 0

IDEA创建SpringMVC+Mybatis+Maven项目

视频如下(加载有点慢请见谅,服务器不太好): 视频

影狼 ⋅ 35分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部