`
别惹Java
  • 浏览: 45534 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

http保持状态的实现方式

 
阅读更多
http保持状态的实现方式:

1.通过cookie来实现(persistent cookie)
      Cookie是通过客户端保持状态的解决方案。从定义上来说,Cookie就是由服务器发给客户端的特殊信息,而这些信息以文本文件的方式存放在客户端,然后客户端每次向服务器发送请求的时候都会带上这些特殊的信息。让我们说得更具体一些:当用户使用浏览器访问一个支持Cookie的网站的时候,用户会提供包括用户名在内的个人信息并且提交至服务器;接着,服务器在向客户端回传相应的超文本的同时也会发回这些个人信息,当然这些信息并不是存放在HTTP响应体(Response Body)中的,而是存放于HTTP响应头(Response Header);当客户端浏览器接收到来自服务器的响应之后,浏览器会将这些信息存放在一个统一的位置,对于Windows操作系统而言,我们可以从:[系统盘]:\Documents and Settings\[用户名]\Cookies目录中找到存储的Cookie;自此,客户端再向服务器发送请求的时候,都会把相应的Cookie再次发回至服务器。而这次,Cookie信息则存放在HTTP请求头(Request Header)了。
       有了Cookie这样的技术实现,服务器在接收到来自客户端浏览器的请求之后,就能够通过分析存放于请求头的Cookie得到客户端特有的信息,从而动态生成与该客户端相对应的内容。通常,我们可以从很多网站的登录界面中看到“请记住我”这样的选项,如果你勾选了它之后再登录,那么在下一次访问该网站的时候就不需要进行重复而繁琐的登录动作了,而这个功能就是通过Cookie实现的。

2.通过session来实现(session cookie)
       session就是一种保存上下文信息的机制,它是针对每一个用户的,变量的值保存在服务器端,通过SessionID来区分不同的客户,session是以cookie或URL重写为基础的,默认使用cookie来实现,系统会创造一个名为JSESSIONID的输出cookie,我们叫做session cookie,以区别persistent cookies,也就是我们通常所说的cookie,注意session cookie是存储于浏览器内存中的,并不是写到硬盘上的,这也就是我们刚才看到的JSESSIONID,我们通常情是看不到JSESSIONID的,但是当我们把浏览器的cookie禁止后,web服务器会采用URL重写的方式传递Sessionid,我们就可以在地址栏看到sessionid=KWJHUG6JJM65HS2K6之类的字符串。

区别:
1、session保存在服务器,客户端不知道其中的信息;cookie保存在客户端,服务器能够知道其中的信息。  
   
2、session中保存的是对象,cookie中保存的是字符串。  
   
3、session不能区分路径,同一个用户在访问一个网站期间,所有的session在任何一个地方都可以访问到。而cookie中如果设置了路径参数,那么同一个网站中不同路径下的cookie互相是访问不到的。  
   
4、session需要借助cookie才能正常<nobr oncontextmenu="return false;" onmousemove="kwM(3);" id="key3" onmouseover="kwE(event,3, this);" style="COLOR: #6600ff; BORDER-BOTTOM: 0px dotted; BACKGROUND-COLOR: transparent; TEXTDECORATION: underline" onclick="return kwC();" onmouseout="kwL(event,this);"target="_blank">工作</nobr>。如果客户端完全禁止cookie,session将失效。

5、session cookie针对某一次会话而言,会话结束session cookie也就随着消失了,而persistent cookie只是存在于客户端硬盘上的一段文本(通常是加密的),而且可能会遭到cookie欺骗以及针对cookie的跨站脚本攻击,自然不如session cookie安全了。
    通常session cookie是不能跨窗口使用的,当你新开了一个浏览器窗口进入相同页面时,系统会赋予你一个新的sessionid,这样我们信息共享的目的就达不到了,此时我们可以先把sessionid保存在persistent cookie中,然后在新窗口中读出来,就可以得到上一个窗口SessionID了,这样通过session cookie和persistent cookie的结合我们就实现了跨窗口的session tracking(会话跟踪)。

参考:http://yahaitt.iteye.com/blog/145820






分享到:
评论

相关推荐

    js实现翻页后保持checkbox选中状态的实现方法

    但是项目中有着需求,所以只能完成实现。 项目具体的需求如下:给角色授权时,选择模块以及模块下的操作,点击上下页后选中的checkbox不变。 界面如下: 实现的思路如下: 在界面中,使用纯js完成。把选中的...

    C++实现的分层有限状态机v0.1

    《C++实现的分层有限状态机v0.1详解》 在计算机科学中,有限状态机(Finite State Machine, FSM)是一种模型,用于描述一个系统的行为,它...对于需要处理多状态交互的项目,这种实现方法无疑是一个值得考虑的工具。

    C# 状态机实现

    在编程领域,状态机是一种非常重要的设计模式,它被...状态机的设计模式有助于保持代码的清晰和可维护性,使得复杂逻辑更容易理解和调试。在实际项目中,可以根据需要扩展更多的状态和事件,以适应更复杂的业务需求。

    状态机+定时器方法实现按键

    在嵌入式开发领域,尤其是基于STM32的微控制器应用中,实现按键操作是常见的需求。本主题将深入探讨如何利用状态机和定时器来有效地处理按键输入,特别是处理多...在STM32这样的微控制器平台上,这种实现方式尤为实用。

    C# TreeView状态保持

    本文将详细讲解如何在C# 2010中实现`TreeView`的状态保持。 ### 1. 概述 状态保持的基本思路是保存用户交互时`TreeView`的状态(如节点的展开/折叠),然后在程序下次运行或重新加载数据时恢复这些状态。这通常...

    Android内容覆盖透明状态栏下实现全屏模式下带状态栏的效果

    此外,还需要注意的是,对于Android的不同版本,实现方式会有所不同。在Android 5.0及以上版本,使用上述方法通常就能达到预期效果。但对于Android 4.4(KitKat)及以下版本,可能需要使用第三方库,如`Android ...

    cookie保持登陆状态

    "Cookie保持登录状态"这一主题涉及到HTTP协议、客户端存储机制以及安全性的多个方面。Cookie是实现这一功能的关键技术,它是由服务器发送到用户浏览器并存储在本地的一种小数据块,用于在后续的请求中向服务器提供...

    用状态机实现ADC0809的采样控制电路

    在电子设计自动化(EDA)领域,使用状态机来实现ADC(模数转换器)的控制电路是一种常见的设计方法。在本实验中,我们关注的是ADC0809,这是一个8位CMOS A/D转换器,它能处理8路不同的模拟输入,并将其转化为数字...

    ASP_NET用户状态保持

    4. **Cookie**:ASP.NET可以通过设置和读取Cookie来保持状态。Cookie存储在客户端,限制了可存储的数据量,并且可以被用户删除或禁用。 5. **Session**:Session状态在服务器端保持数据,为每个用户分配一个唯一的...

    通过区域指针实现PLC和HMI精智触摸屏通信状态诊断具体方法.docx

    总的来说,通过区域指针实现PLC和HMI精智触摸屏的通信状态诊断,是一种高效且精确的方法,能够帮助工程师监控系统的健康状况,并在必要时采取预防性措施。了解并熟练掌握这种方法,对于提高自动化系统的可靠性至关...

    传递函数矩阵的状态空间实现

    - **能控规范形**:这种实现方式保证系统具有良好的能控性,适用于控制策略的设计。 - **能观测规范形**:确保系统具有良好的能观测性,对于状态估计和故障检测非常重要。 - **对角规范形**:将系统分解为一系列独立...

    labview堆栈实现及堆栈状态机

    在LabVIEW中,堆栈可以用来保存和恢复状态,从而在状态之间切换时保持数据完整性。 堆栈VI(如压缩包中的"堆栈.vi")通常包含以下几个关键部分: 1. **堆栈初始化**:创建一个新的空堆栈,用于存储数据。 2. **...

    listview保持选中状态

    为了克服上述问题,本文提供了两种方法来实现`ListView`中选中项保持高亮的效果。 ##### 方法一:利用`Tag`属性 虽然这种方法存在一定的局限性,但对于简单的需求来说仍然是一种可行的选择。其基本思路是: 1. **...

    APP使用token和refreshToken实现保持登录状态.vsdx

    App使用Token 和 RefreshToken 完成登录认证接口,保持登录状态。 这是使用Token和RefreshToken的流程图。

    Android使用RecyclerView实现二级联动,并且选中后保持高亮状态

    这可以通过回调函数或者事件总线等方式实现,以确保一级列表的选中状态与用户的交互保持一致。 5. **布局管理器**:为了让列表具有良好的用户体验,可能需要自定义布局管理器(LayoutManager)来处理复杂的布局逻辑...

    session实现记录用户登录状态

    用session记录用户的登录状态 ...3.实现“显示员工列表”功能。 4.当用户点击“显示员工列表”的时候,验证用户是否已登录,已登录继续显示员工列表,没有登录则跳转到登录页面。 5.退出系统功能。

    VerilogHDL实现的状态机

    总结来说,Verilog HDL提供了一种强大且灵活的方法来实现状态机,使得设计者能够精确地描述数字系统的控制逻辑,从而构建出高效、可靠的硬件系统。通过理解状态机的基本概念、设计步骤以及Verilog语法,我们可以有效...

    使用session保持登陆状态

    3. **保持状态**:当用户刷新页面或访问其他受保护的页面时,浏览器会自动将`JSESSIONID`cookie附带在HTTP请求头中发送给服务器。服务器接收到请求后,通过session ID查找对应的session数据,确认用户已登录状态。 ...

    jsp实现分页,实现状态管理,实现文件上传

    只需在session中设置和获取属性,就可以保持状态。另一种方法是cookie,它将信息存储在客户端,但容量有限且可能被禁用。还有就是使用隐藏表单字段或者URL参数,但这适用于简单的场景,不适用于大量数据或敏感信息。...

Global site tag (gtag.js) - Google Analytics