2019独角兽企业重金招聘Python工程师标准>>>

Http是一个无状态协议,同一个会话的连续两个请求互相不了解,他们由最新实例化的环境进行解析,除了应用本身可能已经存储在全局对象中的所有信息外,该环境不保存与会话有关的任何信息。

自己的理解,在asp.net里:每次提交服务器的页面没有任 何关系,每次记录在页面的信息下次提交是记不住的,(除了应用本身可能已经存储在全局对象中的所有信息外)在.net里实际就是 ViewState,ViewState是asp.net中保存页面信息的基本单位,应用时就是保存在控件隐藏域等中的数据

协议的状态是指下一次传输可以“记住”这次传输信息的能力.
     http是不会为了下一次连接而维护这次连接所传输的信息的.

无状态是指,当浏览器发送请求给服务器的时候,服务器响应,但是同一个浏览器再发送请求给服务器的时候,他会响应,但是他不知道你就是刚才那个浏览器,简单地说,就是服务器不会去记得你,所以是无状态协议。
而DNS是有状态协议 。

HTTP是一个属于应用层的面向对象的协议,HTTP协议一共有五大特点,1、支持客户/服务器模式;2、简单快速;3、灵活;4、无连接;5、无状态;“无状态”是HTTP协议的主要特点之一,以下为“无状态”的解释。 无状态:是指

协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

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了

转载于:https://my.oschina.net/u/1455908/blog/382851

HTTP协议是无状态协议,怎么理解?相关推荐

  1. HTTP协议是无状态协议,怎么理解

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp24 HTTP协议是无状态协议,怎么理解?  2010-02-23 09:4 ...

  2. HTTP 协议是无状态协议,怎么理解

    HTTP 是一个属于应用层的面向对象的协议,HTTP 协议一共有五大特点:1.支持客户/服务器模式:2.简单快速:3.灵活:4.无连接:5.无状态. 无连接 无连接的含义是限制每次连接只处理一个请求. ...

  3. cookie和session之会话机制:   http 协议  ---》 无状态协议

    设置cookie:             通过response对象:      response = make_response()      response.set_cookie(key,val ...

  4. 如何理解HTTP协议是无状态的

    HTTP协议是无状态的,指的是协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态.

  5. Http实战之无状态协议、keep-alive分析

    Http1.1特性 无状态的协议 HTTP 是一种不保存状态,即无状态(stateless)协议. HTTP 协议自身不对请求和响应之间的通信状态进行保存.也就是说在 HTTP 这个级别,协议对于发送 ...

  6. http协议是无状态的,无连接的

    引子: 最近在好好了解http,发现对介绍http的第一句话[http协议是无状态的,无连接的]就无法理解了:无状态的[状态]到底指的是什么?! 找了很多资料不仅没有发现有一针见血正面回答这个问题的, ...

  7. HTTP协议是无状态的/无连接的到底指的是什么?

    直观的说,"每次的请求都是独立的,它的执行情况和结果与前面的请求和之后的请求是无直接关系的,它不会受前面的请求应答情况直接影响,也不会直接影响后面的请求应答情况" 要明白,这句话的 ...

  8. 在web项目中实现会话跟踪(http协议是无状态)

    HTTP是"无状态"协议:客户程序每次读取 Web 页面,都打开到 Web 服务器的单独的连接,并且,服务器也不自动维护客户的上下文信息.即使那些支持持续性 HTTP 连接的服务器 ...

  9. http无状态协议如何保存用户状态

    http无状态协议如何保存用户状态 http无状态协议如何保存用户状态? http无状态协议如何保存用户状态? HTTP 是一种不保存状态,即无状态(stateless)协议.HTTP 协议自身不对请 ...

最新文章

  1. Use MVS Dsbame convensions. windows下ftp.exe客户端上传错误
  2. 【java 性能优化实战】1 理论分析:性能优化,有哪些衡量指标、性能优化的技术手段
  3. XAMPP下的MYSQL解决中文乱码问题
  4. 说说 XSRF 防范
  5. Java编程基础阶段笔记 day 07 面向对象编程(上)
  6. TypeError: Cannot read property ‘publish‘ of undefined“报错问题解决
  7. web项目使用配置web.xml实现重定向
  8. 【Flutter】基础组件【08】BottomNavigationBar
  9. iOS---实现在屏幕上实时绘图的简单效果---CAShaperLayer和UIBezierPath的简单运用
  10. OSI与TCP/IP各层的结构与功能及协议
  11. 计算机之父—— 约翰·冯·诺依曼
  12. 机器学习特征工程--标准化和归一化
  13. 马云被约谈 传递了什么信号?
  14. 帮你解剖Python的一个轻量级桌面GUI开发第三方库:Eel,让它体无完肤
  15. 误检率、查准率、查全率、漏检率计算公式
  16. OpenCV3之操作例子总汇
  17. 拼多多商品APi、商品详情、产品页面信息接口
  18. ESP32使用freeRTOS的消息队列
  19. UBOOT I2C读写详解(基于mini2440)
  20. linux 删除gpt,删除GPT-默认返回MBR

热门文章

  1. RabbitMQ和Kafka到底怎么选?
  2. Java并发编程73道面试题及答案——稳了
  3. 京东 | AI人才联合培养计划!
  4. 《动手学数据分析》开源教程完整发布!
  5. 60亿击败1750亿、验证胜过微调:OpenAI发现GPT-3解决数学题,并非参数越大越好...
  6. 77所教育部直属高校公布2020年预算,清华超300亿!
  7. 生猛!PDF 版本 6000 页 Java 手册开放下载!
  8. 山东大学教授建议:让博士生先回学校
  9. 为了给女朋友买件心怡内衣,我用Python爬虫了天猫内衣售卖数据
  10. 985、211毕业,就了不起吗?