《图解HTTP》知识梳理【二】

第三章:HTTP报文内的HTTP信息

    HTTP报文

        用于HTTP协议交互的信息被称为HTTP报文。请求端(客户端)的HTTP报文叫做请求报文,响应端(服务器端)的叫做响应报文。HTTP报文大致可以分为报文首部和报文主体两块。通常,并不一定要有报文主体。

        请求行:包含用于请求的方法,请求URI和HTTP版本。

        状态行:包含表明响应结果的状态码,原因短语和HTTP版本。

        首部字段:包含表示请求和响应的各种条件和属性的各类首部。一般有4种首部,分别是:通用首部、请求首部、响应首部和实体首部

        其他:可能包含HTTP的RFC里未定义的首部(Cookie等)

      报文主体和实体主体的差异

           报文(message)是HTP通信中的基本单位,由8位组字节流组成,通过HTTP通信传输

            实体(entity)作为请求或响应的有效载荷数据(补充项)被传输,其内容由实体首部和实体主体组成。

            HTTP报文的主体用于传输请求或响应的实体主体

            编码提升传输效率:1. 压缩传输的内容编码;2.分割发送的分块传输编码

    HTTP协议中可以发送多种数据的多部分对象集合

            在HTTP报文中使用多部分对象集合时,需要再首部字段里加上Content-type

    获取部分内容的范围请求

            要实现该功能需要制定下载的实体范围。像这样,指定范围发送的请求叫做范围请求(Range Request),会用到首部字段Range来指定资源的byte范围

    内容协商返回最合适的内容

            内容协商机制是指客户端喝服务器端就响应的资源内容进行交涉,然后提供给客户端最适合的资源。内容协商会以响应资源的语言、字符集、编码方式等作为判断的基准。

              包含在请求报文中的某些首部字段(如下)就是判断的基准

                Accept,Accept-Charset,Accpet-Encoding,Accept-Language,Content-Language

                内容协商技术有以下3种类型:服务器驱动协商、客户端驱动协商、透明协商

第四章:返回结果的HTTP状态码

    状态码的职责是当客户端向服务器发送请求时,描述返回的请求结果。状态码中数字中的第一位指定了响应类别,后两位无分类。

        

    只要遵守状态码类别的定义,即使改变RFC2616中定义的状态码,或服务器自行创建状态码都没问题

    最具有代表性的14个状态码

        2XX 成功:该响应结果表示请求被正常处理了

            200 OK:表示从客户端发来的请求在服务器端被正常处理了

            204 No Content:代表服务器接收的请求已成功处理,但在返回的响应报文中不含实体的主体部分。另外,也不允许返回任何实体的主体。比如当从浏览器发出请求处理后,返回204响应,那么浏览器显示的页面不发生更新。

            一般在只需要从客户端往服务器发送信息,而对客户端不需要发送新信息内容的情况下使用。

          206 Partial Content:表示客户端进行了范围请求,而服务器成功执行了这部分的GET请求。响应报文中包含由Content-Range指定范围的实体内容。

         3XX 重定向:表明浏览器需要执行某些特殊的处理以正确处理请求

                301 Moved Permanently:永久性保存。该状态码表示请求的资源已被分配了新的URL,以后应使用资源现在所指的URI。也就是说,如果已经把资源对应的URI保存为书签了,这是应该按Location首部字段提示的URI重新保存。

                302 Found:临时性重定向。表示请求的资源已被分配了新的URI,希望用户(本次)能使用新的URI访问。即已移动的资源对应的URI将来还有可能发生改变。

                303 See Other:表示由于请求对应的资源存在着另一个URI,应使用GET方法定向获取请求的资源。和302 Found状态码有相同的功能,但303状态码明确表示客户端应当采用GET方法获取资源,这点与302有区别。

                304 Not Modified:表示客户端发送附带条件的请求时,服务器端允许请求访问资源,但因发生请求未满足条件的情况后,直接返回304 Not  Modified(服务器端资源未改变,可直接使用客户端未过期的缓存)。304状态码返回时,不包含任何响应的主体部分。

                307 Temporary Redirect:临时重定向,与302有相同的含义,尽管302标准禁止POST变换成GET,但实际使时大家并不遵守。307 会遵照浏览器标准,不会从POST变为GET,但是对于处理响应时的行为,每种浏览器有可能出现不同的情况。

           4XX客户端错误:表明客户端是发送错误的原因所在

                400 Bad Request:表示请求报文中存在语法错误。当错误发生时,需修改请求的内容后再次发送内容。另外,浏览器会像200 OK一样对待该状态码。

                401 Unauthorized:表示发送的请求需要有通过HTTP认证(BASIC认证、DIGEST认证)的认证信息。另外若之前已进行过1次请求,则表示用户认证失败。当浏览器初次接收到401响应,会弹出认证用的对话窗口。

                 403 Forbidden:表示对请求资源的访问被服务器拒绝了,服务器端没有必要给出拒绝的详细理由,但如果想做说明的话,可以在实体的主体部分对原因进行描述,这样就能让用户看到了。

                404 Not Found:表明服务器上无法找到请求的资源。除此之外,也可以在服务器端拒绝请求且不想说明理由时使用。

            5XX 服务器错误:表示服务器本身发生错误。

               500 Internal Server Error:表明服务器在执行请求时发生了错误。也有可能是Web应用存在的bug或某些临时的故障

                503 Service Unavailable:表明服务器暂时处于超负载或正在进行停机维护,现在无法处理请求。如果事先得知解除以上状况需要的时间,最好写入Retry-After首部字段再返回给客户端。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值