`
Action-人生
  • 浏览: 97859 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Session与Cookie。禁用Cookie后Session会不会受影响?

阅读更多
http://digdeeply.org/archives/03251929.html
Session与Cookie。禁用Cookie后Session会不会受影响?

2012年3月25日 DigDeeply 跳到评论
  Session是由应用服务器维持的一个服务器端的存储空间,用户在连接服务器时,会由服务器生成一个唯一的SessionID,用该SessionID 为标识符来存取服务器端的Session存储空间。而SessionID这一数据则是保存到客户端,用Cookie保存的,用户提交页面时,会将这一 SessionID提交到服务器端,来存取Session数据。这一过程,是不用开发人员干预的。所以一旦客户端禁用Cookie,那么Session也会失效。
  服务器也可以通过URL重写的方式来传递SessionID的值,因此不是完全依赖Cookie。如果客户端Cookie禁用,则服务器可以自动通过重写URL的方式来保存Session的值,并且这个过程对程序员透明。
  可以试一下,即使不写Cookie,在使用request.getCookies();取出的Cookie数组的长度也是1,而这个Cookie的名字就是JSESSIONID,还有一个很长的二进制的字符串,是SessionID的值。
  来看一下,即使不写Cookie,通过chrome的开发者工具,也可以看到这么一组cookie的键值 {PHPSESSID : 3e23bc66d024af8b531f2adb192478af}。
Session与Cookie区别-禁用cookie会不会影响session?
Session与Cookie区别-禁用cookie会不会影响session?

  为什么会有cookie呢,大家应该知道,http是无状态的协议,客户每次读取web页面时,服务器都会去打开新的会话,而且服务器也不会自动维护客户的上下文信息(就是说你在这个页面存储的变量的值不会带到下一个页面去),那么要怎么才能实现网上商店中的购物车机制呢,session就是一种保存上下文信息的机制,它是针对每一个用户的,变量的值保存在服务器端,通过SessionID来区分不同的客户,session是以cookie或URL重写为基础的,默认使用cookie来实现,系统会创造一个名为PHPSESSIONID的输出cookie,我们叫做session cookie,以区别persistent cookies,也就是我们通常所说的cookie,注意session cookie是存储于浏览器内存中的,并不是写到硬盘上的,这也就是我们刚才看到的PHPSESSIONID,我们通常情是看不到PHPSESSIONID的,但是当我们把浏览器的cookie禁止后,web服务器会采用URL重写的方式传递Sessionid,我们就可以在地址栏看到sessionid=3e23bc66d024af8b531f2adb192478af之类的字符串。
  明白了原理,我们就可以很容易的分辨出persistent cookies和session cookie的区别了,网上那些关于两者安全性的讨论也就一目了然了,session cookie针对某一次会话而言,会话结束session cookie也就随着消失了,而persistent cookie只是存在于客户端硬盘上的一段文本(通常是加密的),而且可能会遭到cookie欺骗以及针对cookie的跨站脚本攻击,自然不如session cookie安全了。
  正统的cookie分发是通过扩展HTTP协议来实现的,服务器通过在HTTP的响应头中加上一行特殊的指示以提示浏览器按照指示生成相应的cookie。从网络服务器观点看所有HTTP请求都独立于先前请求。就是说每一个HTTP响应完全依赖于相应请求中包含的信息状态管理机制克服了HTTP的一些限制并允许网络客户端及服务器端维护请求间的关系。在这种关系维持的期间叫做会话(session)。
  Cookies是服务器在本地机器上存储的小段文本并随每一个请求发送至同一个服务器。IETF RFC 2965 HTTP State Management Mechanism 是通用cookie规范。网络服务器用HTTP头向客户端发送cookies,在客户终端,浏览器解析这些cookies并将它们保存为一个本地文件,它会自动将同一服务器的任何请求缚上这些cookies。
  那么,在客户端禁用Cookie的时候,我们要怎么做呢,可以有以下两种方法

设置php.ini中的session.use_trans_sid = 1或者在PHP编译时打开–enable-trans-sid选项,让PHP自动通过URL传递session id。
如果是虚拟主机或者租用的服务器,无法去修改PHP.ini,那么可以手动通过URL传值,或者通过隐藏表单传递session id。说简单些就是自己去操纵sessionid这个唯一标识符,去鉴别用户即可。
分享到:
评论

相关推荐

    PHP100视频教程 32:PHP5中Cookie与 Session详解

    1、Cookie和Session简介与区别Session信息是存放在server端,但session id是存放在client cookie的,当然php的session存放方法是多样化的,这样就算禁用cookie一样可以跟踪Cookie是完全保持在客户端的如:IE firefox...

    java中Cookie被禁用后Session追踪问题

    主要介绍了Java中Cookie被禁用后Session追踪问题,非常不错,具有参考借鉴价值,需要的朋友可以参考下

    PHP禁用cookie如何使用url传递session id

    PHP禁用cookie如何使用url传递session id

    PHP100视频教程 (三十二、PHP5中Cookie与 Session详解)

    的session存放方法是多样化的,这样就算禁用cookie一样可以跟踪 Cookie是完全保持在客户端的如:IE firefox 当客户端禁止cookie时将不能再使用 2、Cookie的配置与应用 Setcookie(string name, string value, int ...

    Springboot中登录后关于cookie和session拦截问题的案例分析

    主要介绍了Springboot中登录后关于cookie和session拦截案例,本文通过实例图文相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

    php禁用cookie后session设置方法分析

    本文实例讲述了php禁用cookie后session设置方法。分享给大家供大家参考,具体如下: 我们都知道当在session 会话有基于cookie和基于url两种传递SESSIONID的方法。为了实现客户端禁止cookie发送的情况也不影响客户...

    PHP100视频教程 32:PHP5中Cookie与 Session详解.rar

    的session存放方法是多样化的,这样就算禁用cookie一样可以跟踪 Cookie是完全保持在客户端的如:IE firefox 当客户端禁止cookie时将不能再使用 2、Cookie的配置与应用  Setcookie(string name, string value, ...

    前端知识Cookie, Session,Token和JWT的发展及区别(一) 上章:主要介绍一下背景和Cookie

    包括Cookie的定义,特点,重要属性,优缺点,作用和使用场景,以及如何解决禁用问题,以及Cookie在客户端和服务端的相关操作。 上章:主要介绍背景和Cookie 中章:主要介绍一下Session并总结一下Cookie和Session。 ...

    【动力节点】Java经典教程_Servlet视频教程之Cookie

    教程名称: 【动力节点】Java经典教程_Servlet视频教程之Cookie动力节点推出的Java视频教程首先简单介绍了Cookie,及在火狐浏览器下如何查看Cookie,然后详细讲解了在JavaEE中如何使用Cookie,及Cookie的禁用。...

    PHP会话控制:Session与Cookie详解

    • 问题1:禁用cookie后session为什么会失效? • 问题2:IE浏览器下丢失session,每次刷新页面,都会生成新的sessionID(Firefox浏览器正常) • session、cookie简单实例 理解会话控制的概念 理解一个概念就需要...

    session编程(包括禁用cookie的情况)

    NULL 博文链接:https://gnnan.iteye.com/blog/1170036

    cookie_demo5.zip

    会话 session 和 cookie(7)_Cookie 禁用处理

    HTML5 Web缓存和运用程序缓存(cookie,session)

    在介绍HTML5 web缓存前,来认识一下cookie和session: session: ...而session id是存储在cookie中的,也就是说如果浏览器禁用了cookie,那么session会失效!(但是可以通过其它方式实现,如:通过URL传递

    PHP5中Cookie与 Session使用详解

    Session信息是存放在server端,但session id是存放在client cookie的,当然php的session存放方法是多样化的,这样就算禁用cookie一样可以跟踪 Cookie是完全保持在客户端的如:IE firefox 当客户端禁止cookie时将不能...

    PHP Session变量不能传送到下一页的解决方法

    我认为,出现这个问题的原因有以下几点: 1、客户端禁用了cookie 2、浏览器出现问题,暂时无法存取cookie 3、php.ini中的session.use_trans_sid = 0或者编译时没有打开–enable-trans-sid选项 为什么会这样呢?...

    【动力节点Java学院】Servlet视频教程之Session

    动力节点推出的Java视频教程首先简单介绍了Cookie,及在火狐浏览器下如何查看Cookie,然后详细讲解了在JavaEE中如何使用Cookie,及Cookie的禁用。...最后讲解了Cookie禁用后如何使用Session进行会话跟踪。

    Cookie与Session的常用操作及其工作原理

    首先介绍了Cookie是什么及其诞生背景,Cookie的工作原理,及在谷歌...其次详细讲解了Session是什么及其诞生背景,Session的工作原理与常用操作,及Cookie禁用后如何使用Session进行会话跟踪。最后讲解了Session的失效。

    关于PHP5 Session生命周期介绍

    它是通过 Session ID 来判断的,什么是 ...如果客户端没有禁用 Cookie,则 Cookie 在启动 Session 会话的时候扮演的是存储 Session ID 和 Session 生存期的角色。我们来手动设置 Session 的生存期: <?php ses

Global site tag (gtag.js) - Google Analytics