http协议报文头及常见的状态码

http协议

简介:

  • http协议(hyper text transfer protocol,超文本传输协议),是用于从万维网服务器传输超文本到本地浏览器的传送协议。
  • http基于TCP/IP通信协议来传递数据,属于应用层协议。
  • http基于客户端/服务器(c/s)架构模型,通过可靠的链接来交换信息,是一个无状态的请求/响应协议

特点:

  • HTTP是无连接:无连接的含义是限制每次链接只处理一个请求,服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
  • HTTP是媒体独立的:只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过HTTP发送,客户端以及服务器指定使用适合的MIME-type内容类型。
  • HTTP是无状态的:无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则他必须重传,这样可能导致每次链接传送的数据量增大。另一方面,在服务器不需要先前信息时他的应答就比较快。

http请求报文分析

http请求报文由三部分组成(请求头、请求行、请求体

请求行

  1. 请求方法 ,GET和POST是最常见的HTTP方法,除此之外还包括DELETE、HEAD、OPTIONS、TRACE
  2. 请求对应的URL地址,他和报文头的host属性组成完整的请求URL
  3. 协议名称及版本号

请求头

     是HTTP的报文头,报文头包含若干个属性,格式为“属性名:属性值”,服务端依据此获取客户端的信息。与缓存相关的规则信息,均包含在header中。

     报文头的属性有:

  • Accept
    • 请求报文可通过一个“accept”报文头属性告诉服务端 客户端接收什么类型的响应。
    • 如下报文头相当于告诉服务端,它能接收的响应类型为纯文本数据。
    • Accept属性的值可以为一个或多个MIME类型的值(描述消息内容类型的因特网标准,消息能包含文本、图像、音频视频以及其他应用程序专用的数据)

      Accept:text/plain
  • cookie
    • 客户端的cookie就是通过这个报文头属性传给服务器
Cookie: $Version=1; Skin=new;jsessionid=5F4771183629C9834F8382E23 

               服务端是怎么知道客户端的多个请求是隶属于一个Session呢?注意到后台的那个jsessionid =                      5F4771183629C9834F8382E23木有?原来就是通过HTTP请求报文头的Cookie属性的jsessionid的值关联起来的!(当然也可以 通过重写URL的方式将会话ID附带在每个URL的后面哦)。     

  •  referer
    表示这个请求时从哪个URL过来的,假如你通过Google搜索出一个商家的广告页面,你对这个页面广告感兴趣,鼠标一点发送这个请求报文到商家的网站,这个请求报文的referer报文头属性值就是http://www.google.com
  • cache-control
    对缓存进行控制,如一个请求希望响应返回的内容在客户端要被缓存一年,或不希望被缓存就可以通过这个报文头达到目的  

请求体

     是报文体,它将一个页面表单中的组件值通过param1=value1&param2=value2的键值对形式编码成一个格式化串,它承载多个请求参数的数据。不但报文体可以传递请求参数,请求URL也可以通过这个方式来传递请求参数

http响应报文

http的响应报文也由三部分组成(响应行+响应头+响应体)

响应行:

  • 报文协议及版本 
  • 状态码及状态描述

响应头:

  • 响应报文头,也是由多个属性组成

响应体:

  • 响应报文头,即我们真正要的“干货”

常见的响应状态码

和请求报文相比,响应报文多了一个“响应状态码”,它以“清晰明确”的语言告诉客户端本次请求的处理结果。
http的响应状态码由5段组成:

  • 1xx消息,一般是告诉客户端,请求已经收到了,正在处理,别急......
  • 2xx处理成功,一般表示:请求收悉,我明白你要的,请求已受理,已经处理完成等信息
  • 3xx重定向到其他地方,它让客户端再发起一个请求以完成整个处理
  • 4xx处理发生错误,责任在客户端,如客户端的请求一个不存在的资源,客户端未被授权,禁止当问等,
  • 5xx处理发生错误,责任在服务端,如服务器抛出异常,路由出错,HTTP版本不支持等。

常见的报文状态码如下:

  1. 200(OK):找到了资源,并且一切正常
  2. 302/307:临时重定向,指出请求的文档已被临时移动到别处,此文档的新URL在location响应头中给出
  3. 304(not modified):该资源在上次请求之后没有任何修改。这通常用于浏览器的缓存机制
  4. 401(unauthorized):客户端无权访问该资源。这通常会使得浏览器要求用于输入用户名和密码,以登录到服务器
  5. 403(forbidden):客户端未能获得授权。这通常是在401之后输入了不正确的用户名和密码。
  6. 404(not found):在指定的位置不存在所申请的资源。

猜你喜欢

转载自blog.csdn.net/PINGER0077/article/details/83119715