session依赖cookie,如果浏览器禁用了cookie呢?
我们都知道session依赖cookie,因为服务器需要在每次请求中获取sessionId,然后找到客户端的session对象,如果浏览器禁用了cookie呢?
这个时候,就需要用到URL重写了,这种方法让服务器收到的每个请求中都带有sessioinId。
URL重写的具体方法是:在每个页面中的每个链接和表单中都添加名为jSessionId的参数,值为当前sessionid。当用户点击链接或提交表单时也服务器可以通过获取jSessionId这个参数来得到客户端的sessionId,找到sessoin对象,来看看具体的例子:
方法一:
------------链接------------
<a href='/jsp/index.jsp;jsessionid=<%=session.getId() %>' >主页</a>
------------表单------------
<form action='/jsp/index.jsp;jsessionid=<%=session.getId() %>' method="post">
<input type="submit" value="提交"/>
</form>
方法二(使用response.encodeURL()对每个请求的URL处理,这个方法会自动追加jsessionid参数,与上面我们手动添加是一样的效果。):
------------链接------------
<a href='<%=response.encodeURL("/jsp/index.jsp") %>' >主页</a>
------------表单------------
<form action='<%=response.encodeURL("/jsp/index.jsp") %>' method="post">
<input type="submit" value="提交"/>
</form>
使用response.encodeURL()更加“智能”,它会判断客户端浏览器是否禁用了Cookie,如果禁用了,那么这个方法在URL后面追加jsessionid,否则不会追加。
所以说,建议使用方法二。
session依赖cookie,如果浏览器禁用了cookie呢?的更多相关文章
- 为什么说session依赖cookie,以及cookie的常用知识
session的用法 session在Flask中通常用做设置某些页面的权限,比如某些页面必须要登录才可以看到,登录的信息或标志就放到session中.它的使用过程如下: 在整个flask工程的启动文 ...
- 浏览器禁用Cookie,基于Cookie的会话跟踪机制失效的解决的方法
当浏览器禁用Cookies时.基于Cookie的会话跟踪机制就会失效.解决的方法是利用URL重写机制跟踪用户会话. 在使用URL重写机制的时候须要注意.为了保证会话跟踪的正确性,全部的链接和重定向语句 ...
- 浏览器禁用cookie后php如何保持session会话-use_trans_sid机制
原文:浏览器禁用cookie后php如何保持session会话-use_trans_sid机制 为防止浏览器禁用cookie导致服务器会话无法保持,php开发了一个机制,该机制开启后,浏览器发起请求后 ...
- 解决Safari高版本浏览器中默认禁用第三方COOKIE(含demo)
前段时间在项目里遇到了一个比较头疼的问题,就是高版本的Safari中默认会阻止第三方cookie,这使得使用Safari浏览器的用户无法按照正常的业务逻辑进行操作. 问题展现 知识点 什么是第三方co ...
- session与cookie的区别是什么?如果客户端禁用了cookie功能,将会对session有什么影响?
cookie 和session 的区别: a.cookie数据存放在客户的浏览器上,session数据放在服务器上. b.cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE ...
- 浏览器禁用Cookie
做JavaWeb的都知道Session的底层是使用Cookie来实现的,服务器端会在本地文件中保存session信息,并将sessionID发给客户端(浏览器),浏览器就会把这个sessionID(准 ...
- Ipad Safari iframe cookie 当浏览器默认禁用第三方COOKIE
前一阵子,我们发现高版本的Safari中默认会阻止第三方cookie,如下图所示. 问题 什么是第三方cookie呢?在访问一个网站A时,网站A算作第一方,如果网站A中引用了另一个网站X(网站X的域名 ...
- 如果客户端禁用了cookie,如何实现session
虽然客户端禁用了cookie,那么当访问某一个php文件时,php会先查找php.ini,如果session.use_trans_sid=1/session.use_only_cookie=0,php ...
- cookie加密 当浏览器全面禁用三方 Cookie
cookie加密 cookie localstorage 区别 https://mp.weixin.qq.com/s/vHeRStcCUarwqsY7Y1rpGg 当浏览器全面禁用三方 ...
随机推荐
- Ts基础
//typeof 用来判断变量类型 var s: string = 'egret'; var isString: boolean = typeof s === 'string'; console.lo ...
- 关于宽带接两台路由,并且第二台需要关闭DHCP的设置
关于宽带接两台路由,并且第二台需要关闭DHCP的设置 https://wenku.baidu.com/view/e317a12d4b35eefdc8d333cb?pcf=2#1
- activiti 委派和转办的区别
委派 委派:是将任务节点分给其他人处理,等其他人处理好之后,委派任务会自动回到委派人的任务中 将hr的任务进行委派: taskService.delegateTask(taskId, userId); ...
- 大数据离线分析平台 JavaSDK数据收集引擎编写
JavaSDK设计规则 JavaSDK提供两个事件触发方法,分别为onChargeSuccess和onChargeRefund.我们在java sdk中通过一个单独的线程来发送线程数据,这样可以减少对 ...
- curl发送post请求,统计响应时间
curl -o /dev/null -s -w %{time_namelookup}::%{time_connect}::%{time_starttransfer}::%{time_total}:: ...
- TCP加速锐速SS(ServerSpeeder)破解版一键安装
速(serverspeeder),是一款TCP加速程序,能够增强VPS/服务器连接的稳定性,且有效的提高服务器的带宽利用率,进而提高访问速度.老左经常看到论坛.群里有用户提到锐速这款软件可以提高VPS ...
- ML: 聚类算法R包 - 密度聚类
密度聚类 fpc::dbscan fpc::dbscan DBSCAN核心思想:如果一个点,在距它Eps的范围内有不少于MinPts个点,则该点就是核心点.核心和它Eps范围内的邻居形成一个簇.在一个 ...
- 局域网内远程连接OPC配置方法详解
局域网内远程连接OPC配置方法详解 https://wenku.baidu.com/view/20fb8ea6d1d233d4b14e852458fb770bf78a3bcc.html OPC服务 ...
- phoenix初步
更新系统包管理工具hex mix local.hex 安装phoenix,phoenix是elixir的web框架 mix archive.install https://github.com/pho ...
- [Android] 配置build.gradle 动态传参
(1)一个Android工程中有一个build.gradle是负责Project范围的,而Module中又有各自的build.gradle是专门负责模块的. (2)在Gradle中Task是一等公民, ...