问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

session cookie能不能跨窗口使用

发布网友 发布时间:2022-04-23 18:21

我来回答

1个回答

热心网友 时间:2023-09-13 23:15

  在PHP面试中 经常碰到请阐述session与cookie的区别与联系,以及如何修改两者的有效时间。
  大家都知道,session是存储在服务器端的,cookie是存储在客户端的,session依赖于cookie,但是让你说详细点,你会吗?我是不太清楚的,特意在网上找了很多资料,发现一篇不错的文章,特整理归纳在此,供有需要的朋友查看。
  
  具体来说cookie机制采用的是在客户端保持状态的方案。它是在用户端的会话状态的存贮机制,他需要用户打开客户端的cookie支持。cookie的作用就是为了解决HTTP协议无状态的缺陷所作的努力.
而session机制采用的是一种在客户端与服务器之间保持状态的解决方案。同时我们也看到,由于采用服务器端保持状态的方案在客户端也需要保存一个标识,所以session机制可能需要借助于cookie机制来达到保存标识的目的。而session提供了方便管理全局变量的方式
session是针对每一个用户的,变量的值保存在服务器上,用一个sessionID来区分是哪个用户session变量,这个值是通过用户的浏览器在访问的时候返回给服务器,当客户禁用cookie时,这个值也可能设置为由get来返回给服务器。
就安全性来说:当你访问一个使用session 的站点,同时在自己机子上建立一个cookie,建议在服务器端的SESSION机制更安全些.因为它不会任意读取客户存储的信息。

正统的cookie分发是通过扩展HTTP协议来实现的,服务器通过在HTTP的响应头中加上一行特殊的指示以提示浏览器按照指示生成相应的cookie
从网络服务器观点看所有HTTP请求都独立于先前请求。就是说每一个HTTP响应完全依赖于相应请求中包含的信息
状态管理机制克服了HTTP的一些*并允许网络客户端及服务器端维护请求间的关系。在这种关系维持的期间叫做会话(session)。
Cookies是服务器在本地机器上存储的小段文本并随每一个请求发送至同一个服务器。
  session机制是一种服务器端的机制,服务器使用一种类似于散列表的结构(也可能就是使用散列表)来保存信息。

当程序需要为某个客户端的请求创建一个session的时候,服务器首先检查这个客户端的请求里是否已包含了一个session标识 - 称为 session id,如果已包含一个session id则说明以前已经为此客户端创建过session,服务器就按照session id把这个 session检索出来使用(如果检索不到,可能会新建一个),如果客户端请求不包含session id,则为此客户端创建一个session并且生成一个与此session相关联的session id,session id的值应该是一个既不会重复,又不容易被找到规律以仿造的字符串,这个 session id将被在本次响应中返回给客户端保存。
  
  在谈论session机制的时候,常常听到这样一种误解“只要关闭浏览器,session就消失了”。其实可以想象一下会员卡的例子,除非顾客主动对店家提出销卡,否则店家绝对不会轻易删除顾客的资料。对session来说也是一样的,除非程序通知服务器删除一个session,否则服务器会一直保留,程序一般都是在用户做log off的时候发个指令去删除session。然而浏览器从来不会主动在关闭之前通知服务器它将要关闭,因此服务器根本不会有机会知道浏览器已经关闭,之所以会有这种错觉,是大部分session机制都使用会话cookie来保存session id,而关闭浏览器后这个 session id就消失了,再次连接服务器时也就无法找到原来的session。如果服务器设置的cookie被保存到硬盘上,或者使用某种手段改写浏览器发出的HTTP请求头,把原来的session id发送给服务器,则再次打开浏览器仍然能够找到原来的session。

恰恰是由于关闭浏览器不会导致session被删除,迫使服务器为seesion设置了一个失效时间,当距离客户端上一次使用session的时间超过这个失效时间时,服务器就可以认为客户端已经停止了活动,才会把session删除以节省存储空间。

  大家都知道,http是无状态的协议,客户每次读取web页面时,服务器都打开新的会话,而且服务器也不会自动维护客户的上下文信息,那么要怎么才能实现网上商店中的购物车呢,session就是一种保存上下文信息的机制,它是针对每一个用户的,变量的值保存在服务器端,通过SessionID来区分不同的客户,session是以cookie或URL重写为基础的,默认使用cookie来实现,系统会创造一个名为JSESSIONID的输出cookie,我们叫做session cookie,以区别persistent cookies,也就是我们通常所说的cookie,注意session cookie是存储于浏览器内存中的,并不是写到硬盘上的,这也就是我们刚才看到的JSESSIONID,我们通常情是看不到JSESSIONID的,但是当我们把浏览器的cookie禁止后,web服务器会采用URL重写的方式传递Sessionid,我们就可以在地址栏看到sessionid=KWJHUG6JJM65HS2K6之类的字符串。
明白了原理,我们就可以很容易的分辨出persistent cookies和session cookie的区别了,网上那些关于两者安全性的讨论也就一目了然了,session cookie针对某一次会话而言,会话结束session cookie也就随着消失了,而persistent cookie只是存在于客户端硬盘上的一段文本(通常是加密的),而且可能会遭到cookie欺骗以及针对cookie的跨站脚本攻击,自然不如session cookie安全了。
通常session cookie是不能跨窗口使用的,当你新开了一个浏览器窗口进入相同页面时,系统会赋予你一个新的sessionid,这样我们信息共享的目的就达不到了,此时我们可以先把sessionid保存在persistent cookie中,然后在新窗口中读出来,就可以得到上一个窗口SessionID了,这样通过session cookie和persistent cookie的结合我们就实现了跨窗口的session tracking(会话跟踪)。
在一些web开发的书中,往往只是简单的把Session和cookie作为两种并列的http传送信息的方式,session cookies位于服务器端,persistent cookie位于客户端,可是session又是以cookie为基础的,明白的两者之间的联系和区别,我们就不难选择合适的技术来开发web service了。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
有谁能发个好看的精彩的完结版的玄幻魔法小说给我 ,谢谢啊 谁有经典的玄幻网络小说,推荐几个 谢谢 怀孕为什么肚脐会突出 为什么孕期肚脐突出来 孕后期肚脐眼突出怎么回事 孕妇肚脐眼突出怎么回事 孕24周肚脐眼凸出来正常吗 孕妇肚脐突出来是怎么回事 请问豆丁网怎么注册?我在注册时,输验证码时,我看了又看,输了输,还是提... 电脑开机后显示nosignal然后黑屏电脑nosignal然后黑屏是什么原因_百 ... 如何在Oracle数据库10g中跟踪SQL Web防火墙怎么对TCP协议 恶意用户所发起会话进行跟踪 连接 Servlet中的会话跟踪技术之一的"隐藏表单域"有什么具体作用?怎么用? cookie和session的区别和应用场景 12. 如何进行session追踪?Session范围的应用。 是否能够通过客户机的ip地址实现会话跟踪 简述session跟踪,实现session跟踪的主要技术方案有哪些 为什么要在电子商务中引入会话跟踪呢? 小米三控开关怎么安装 小米智能接线板连接不上怎么办 sevlet中隐藏表单实现会话跟踪具体有什么用? 小米接线板真的很垃圾,插头怎么也插不进去,怎么办 什么叫会话跟踪(定义),以及会话跟踪的方法 小米盒子高清线怎么连接电视连功放? 简单说明一下四种会话跟踪技术。(从是否会用在servlet,jsp,页面描述三方面讲述) 小米电视4A后面接线图 对于大型的分布式系统,一般是如何实现会话跟踪的呢 小米typec耳机公头坏了,五根线颜色的定义,怎么接线啊 小米mix电源线两根红色,怎么接?请看图 web开发中会话跟踪的方法有哪些 AutoCAD中怎样自己设置图纸大小? cad新建图纸怎么调整大小 写新闻的技巧和方法 在CAD中怎样把已画好的图形大小调整到自己想要的大小呢? 新闻写作的方法 怎么写新闻方法 新闻稿写作的具体步骤分为 新闻类软文的撰写手法? 新闻写作方法与技巧 我QQ更新之后,为什么聊天记录全不见 为什么QQ每次升级过后聊天记录都没有了,怎么可以恢复? 为什么QQ每次升级过后聊天记录都没有了,怎么可以恢复?QQ自动更新之后,我和别人的聊天记录就找不到_百度问一问 QQ升级了,聊天记录会没有了么? 手机QQ升级以后原来的聊天记录没有了,找得回来吗 手机qq更新后聊天记录全部不见了 QQ更新后 之前的聊天记录没了 为啥升级qq后聊天记录都不见了 QQ版本升级后原来的聊天记录就没有了,怎么可以找回?谢谢了 我升级了QQ版本 以前的聊天记录没了 怎么能找到? qq更新后聊天记录都不见了