`
sangei
  • 浏览: 329388 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论
阅读更多

        HTTP是Hyper Text Transfer Protocol的缩写,顾名思义,这个协议支持着超文本的传输。那么什么是超文本呢?说白了就是使用HTML编写的页面。通常,我们使用客户端浏览器访 问服务器的资源,最常见的URL也是以html为后缀的文件。因此,我们可以说超文本是网络上最主要的资源。

        既然HTTP协议的目的在于支持超文本的传输,更加广义一些就是支持资源的传输,那么在客户端浏览器向HTTP服务器发送请求,继而HTTP服务器将相应 的资源发回给客户端这样一个过程中,无论对于客户端还是服务器,都没有必要记录这个过程,因为每一次请求和响应都是相对独立的,就好像你在自动售货机前投 下硬币购买商品一样,谁都不会也不需要记住这样一个交易过程。一般而言,一个URL对应着唯一的超文本,而HTTP服务器也绝对公平公正,不管你是 Michael,还是Jordon,它都会根据接收到的URL请求返回相同的超文本。正是因为这样的唯一性,使得记录用户的行为状态变得毫无意义,所 以,HTTP协议被设计为无状态的连接协议符合它本身的需求。

        然而,随着时间的推移,人们发现静态的HTML着实无聊而乏味,增加动态生成的内容才会令Web应用程序变得更加有用。于是乎,HTML的语法在不断膨 胀,其中最重要的是增加了表单(Form);客户端也增加了诸如脚本处理、DOM处理等功能;对于服务器,则相应的出现了CGI(Common Gateway Interface)以处理包含表单提交在内的动态请求。在这种客户端与服务器进行动态交互的Web应用程序出现之后,HTTP无状态的特性严重阻碍了这 些应用程序的实现,毕竟交互是需要承前启后的,简单的购物车程序也要知道用户到底在之前选择了什么商品。于是,两种用于保持HTTP连接状态的技术就应运 而生了,一个是Cookie,而另一个则是Session。

        Cookie是通过客户端保持状态的解决方案。从定义上来说,Cookie就是由服务器发给客户端的特殊信息,而这些信息以文本文件的方式存放在客户端, 然后客户端每次向服务器发送请求的时候都会带上这些特殊的信息。让我们说得更具体一些:当用户使用浏览器访问一个支持Cookie的网站的时候,用户会提 供包括用户名在内的个人信息并且提交至服务器;接着,服务器在向客户端回传相应的超文本的同时也会发回这些个人信息,当然这些信息并不是存放在HTTP响 应体(Response Body)中的,而是存放于HTTP响应头(Response Header);当客户端浏览器接收到来自服务器的响应之后,浏览器会将这些信息存放在一个统一的位置,对于Windows操作系统而言,我们可以从: [系统盘]:\Documents and Settings\[用户名]\Cookies目录中找到存储的Cookie;自此,客户端再向服务器发送请求的时候,都会把相应的Cookie再次发回 至服务器。而这次,Cookie信息则存放在HTTP请求头(Request Header)了。
        有了Cookie这样的技术实现,服务器在接收到来自客户端浏览器的请求之后,就能够通过分析存放于请求头的Cookie得到客户端特有的信息,从而动态 生成与该客户端相对应的内容。通常,我们可以从很多网站的登录界面中看到“请记住我”这样的选项,如果你勾选了它之后再登录,那么在下一次访问该网站的时 候就不需要进行重复而繁琐的登录动作了,而这个功能就是通过Cookie实现的。
   
        与Cookie相对的一个解决方案是Session,它是通过服务器来保持状态的。由于Session这个词汇包含的语义很多,因此需要在这里明确一下 Session的含义。首先,我们通常都会把Session翻译成会话,因此我们可以把客户端浏览器与服务器之间一系列交互的动作称为一个 Session。从这个语义出发,我们会提到Session持续的时间,会提到在Session过程中进行了什么操作等等;其次,Session指的是服 务器端为客户端所开辟的存储空间,在其中保存的信息就是用于保持状态。从这个语义出发,我们则会提到往Session中存放什么内容,如何根据键值从 Session中获取匹配的内容等。
        要使用Session,第一步当然是创建Session了。那么Session在何时创建呢?当然还是在服务器端程序运行的过程中创建的,不同语言实现的 应用程序有不同创建Session的方法,而在Java中是通过调用HttpServletRequest的getSession方法(使用true作为 参数)创建的。在创建了Session的同时,服务器会为该Session生成唯一的Session id,而这个Session id在随后的请求中会被用来重新获得已经创建的Session;在Session被创建之后,就可以调用Session相关的方法往Session中增加 内容了,而这些内容只会保存在服务器中,发到客户端的只有Session id;当客户端再次发送请求的时候,会将这个Session id带上,服务器接受到请求之后就会依据Session id找到相应的Session,从而再次使用之。正式这样一个过程,用户的状态也就得以保持了。有关Session的内容还比较多,在以后的Post中, 我还将继续讲述。

        综上所述,HTTP本身是一个无状态的连接协议,为了支持客户端与服务器之间的交互,我们就需要通过不同的技术为交互存储状态,而这些不同的技术就是Cookie和Session了。

分享到:
评论

相关推荐

    单片机裸奔之状态机浅谈

    说到单片机编程,不得不说到状态机,状态机做为...灵活的应用状态机不仅是程序更高效,而且可读性和扩展性也很好。状态无处不在,状态中有状态,只要掌握了这种思维,让它成为您编程中的一种习惯,相信您会受益匪浅。

    浅谈海上油田孤岛电力系统状态估计的必要性.pdf

    浅谈海上油田孤岛电力系统状态估计的必要性.pdf

    浅谈电力设备状态检修.pdf

    指出了电力设备开展状态检修的必要性, 介绍了国网开展状态检修的进展和开展状态检修需要注意的问题。对目前 状态检修工作中存在的问题进行了分析, 给出了开展状态检修的几点意见。

    浅谈关于能量管理系统

    可以区别EM S 各模块的关闭状态、初始化状态、起动预备状态、请求执行状态、正在执行状态、超时状态、闭锁状态、执行完成状态、出错状态和停止状态等。在 EM S 应用监视器的流程图上, 标明各模块的运行状态。并将各...

    浅谈计算机应用基础课程创新教学.docx

    为了确保教师对学生点评的客观性与真实性,教师可以利用大数据技术分析学生各个学习状态之间的相互关系,进而挖掘各个学习因素之间的内在联系,并将其总结为学生的学习报告上交浅谈计算机应用基础课程创新教学全文共...

    浅谈大数据技术.docx

    浅谈大数据技术 作者:崔倩 来源:《科学与财富》2020年第30期 摘 要:大数据已经成为一种基础性新资源,已初显潜在的价值和巨大的变革之力。本文介绍了大数据的定义、特征,分析了大数据的应用和发展趋势。 关键词...

    浅谈黑客与网络安全-.docx

    2.4 端口扫描 所谓端口扫描,就是利用Socket编程与目标主机的某些端口建立TCP连接、进行传输协议的验证等,从而侦知目标主机的扫描端口是否处于激活状态、主机提供了哪些效劳、提供的浅谈黑客与网络安全-全文共2页...

    浅谈数据库设计方法.doc

    浅谈数据库设计方法 本文主要对数据库设计理论内容进行全面分析,这是建立在软件开发经验基础上实施 的操作,可以根据不同角度来阐述数据库设计的方法,以及设计技巧,让更多的数据库 设计人员了解数据库设计相关...

    IOI国家集训队论文集1999-2019

    骆 骥 -《由"汽车问题"浅谈深度搜索的一个方面——搜索对象与策略的重要性》 毛子青 -《动态规划算法的优化技巧》 俞 玮 -《基本动态规划问题的扩展》 张一飞 -《求N!的高精度算法》 ## 2002 戴德承 -《退...

    浅谈-易用性测试[3]

    浅谈-易用性测试[3] 软件测试 状态跳转 状态终止和跳过 数据输入和输出 (5)舒适 软件使用起来应该舒适,不能给用户工作制造障碍和困难。 恰当; 错误处理; 性能。 (6)正确 要测试正确性,就是测试UI是否做...

    浅谈电厂电气自动化方案设计.doc

    浅谈电厂电气自动化方案设计 作者:霍延川 来源:《科技创新与应用》2015年第06期 摘 要:近年来,我国的电厂电气自动化得到了很大的发展,但是在电气自动化方案的设计 上存在一定问题。本文对于电气自动化系统的...

    浅谈计算机系统的安全防范调研报告.doc

    浅谈计算机系统的安全防范调研报告 浅谈计算机系统的安全防范 随着计算机及网络技术与应用的不断发展,伴随而来的计算机系统安全问题越来越引起 人们的关注。计算机系统一旦遭受破坏,将给使用单位造成重大经济损失...

    一起浅谈软件硬件的联系

    对于软件系统,特别是复杂的大型系统,虽然有严谨的理论去判断一个软件模块的稳定性。但对于程序员调试,并不是一个简单轻松的过程。可以借鉴伏秒平衡的思路,一个大型的代码在一个状态结束时,除了一些统计变量之外...

    网络安全论文:浅谈办公网络安全——病毒防治.doc

    浅谈办公网络安全——病毒防治 随着信息化的不断扩展,办公网络在提高数据传输效率、实现数据集中、数据共享 等方面发挥着越来越重要的作用。办公网络安全是办公系统软硬件正常顺利运行的基本 前提,因此办公网络...

    网络安全论文:浅谈一种基于WPDRRC的网络安全模型.doc

    浅谈一种基于WPDRRC的网络安全模型 随着网络信息化程度的日益加深,网络通信面临越来越多的威胁。尤其随着三网融 合及物联网技术的不断发展,网络通信安全已成为当前社会面临的新问题。在目标未受 到严重损害前,...

    网络安全论文:浅谈如何构建网络安全防护体系.doc

    浅谈如何构建网络安全防护体系 1.网络安全防护体系内涵及现状分析 网络安全是指计算机中的硬件、软件以及网络系统中的数据受到保护,不会因为偶然 的或者恶意的原因而被破坏、泄露,甚至更改信息,计算机系统能持续...

    浅谈如何优化煤矿机电设备管理

    通过对机电设备的不安全状态和人的不安全行为所引发的煤矿机电事故的分析,提出了针对性的解决方案。

    《计算机硬件组装与维护》课程一体化教学浅谈.doc

    《计算机硬件组装与维护》课程一体化教学浅谈 摘要:技工学校是职业教育的重要组成部分,重在培养技能型人才。计算机组装与维 护是中等职业学校计算机专业的一门专业必修课,它的实用性很强。由于计算机的更新换 代快,...

    浅谈影响煤层瓦斯赋存的主要地质因素

    煤层瓦斯的生成、储积和运移是受控于一定的地质条件的,地质条件的差异性,导致现今煤层瓦斯在纵向上和横向上的不均衡分布,造成不同矿区(或矿井)、不同煤层、不同地质块段瓦斯赋存的不均衡。因此从地质角度研究煤层...

Global site tag (gtag.js) - Google Analytics