你应该了解的http协议

Posted web前端和php开发

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了你应该了解的http协议相关的知识,希望对你有一定的参考价值。

HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。 http是web应用程序数据通信的一种工具,是因特网中使用的公共语言,HTTP 客户端发出请求会提供数据,客户端向服务器发送 HTTP 请求,服务器会在 HTTP 响应中返回请求的数据    

   

HTTP允许传输任意类型的数据对象,传输的类型由Content-Type标记,http连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。绝大多数的Web开发,都是构建在HTTP协议之上的Web应用。




我们先来看下数据交互时浏览器headers部分显示的文本:下面报文的字段涵盖的并不全面,所以作为参考。



下面我们详细来看下报文字段


1) Request URL:因特网上请求资源的具体位置。 


2) 200:状态码告诉客户端,请求发生的了什么,状态码位于响应的起始行中,常见的额状态码有200,404,401,500,503等等。200表示请求成功,请求返回的数据在主体中,404表示资源不存在,401表示没有授权需要用户名和密码,下面是状态码分类。                                              

  • 状态码分类

  • 整体范围      已定义范围     分  类

  • 100 ~ 199   100 ~ 101     信息提示

  • 200 ~ 299   200 ~ 206     成功

  • 300 ~ 399   300 ~ 305     重定向

  • 400 ~ 499   400 ~ 415     客户端错误

  • 500 ~ 599   500 ~ 505     服务器错误


3)  Request Method:请求的方式,请求方式有很多种,常用的是get和post方法,GET 方法负责从服务器获取一个文档,POST 方法会向服务器发送需要处理的数据,常用的HTTP方法如下:                   


  • GET 从服务器获取一份文档 不包含主体

  • HEAD 只从服务器获取文档的首部 不包含主体

  • POST 向服务器发送需要处理的数据 包含主体

  • PUT 将请求的主体部分存储在服务器上 包含主体

  • TRACE 对可能经过代理服务器传送到服务器上去的报文进行追踪 不包含主体

  • OPTIONS 决定可以在服务器上执行哪些方法 不包含主体

  • DELETE 从服务器上删除一份文档 不包含主体                                                

4) Content-Type:MIME 类型,表示这个主体的对象类型,大多数浏览器都可以处理数百种常见的对象类型,MIME 类型是一种文本标记,表示一种主要的对象类型和一个特定的子类型,中间由一条斜杠来分隔。                                                                 text/html:HTML 格式的文本文档 ,                                                                    text/plain:普通的 ASCII 文本文档                                                                      image/jpeg:JPEG 格式的图片                                                                            image/gif:GIF 格式的图片


5)Date:Thu, 15 Jun 2017 08:28:26 GMT   服务器产生响应的日期

6)Content-length:1024 实体的主体部分,说明包含了1024 字节的数据

8)Pragma: no-cache  通过它可以迫使缓存在有新副本可用的情况下,向原始服务器请求文档或对其进行再验证。用户点击重新加载 或者刷新按钮时,浏览器就会发出这个首部。很多服务器会将 Pragma:no-cache 作为响应首部发送和 Cache-Control:no-cache 等价

9)Public: OPTIONS, GET, HEAD, TRACE, POST 。服务器可以用 Public 首部告知客户端它支持哪些方法。 

10)Range: bytes=500-1500。它的值说明了报文所包含实体的范围,在请求某实体的部分内容中会用到 Range 首部。

11)Referer:告知服务器从哪离发起的URL请求

例如:

  1. Referer:http://admin.me.dingdon/index

12)Server:和User-Agent 首部类似。它的值就是服务器名字和一个可选的服务器注释。

13)Transfer-Encoding:chunked。如果要通过某些编码来安全地传送 HTTP 报文主体,报文中就要包含 Transfer-526552 | 附录 CEncoding 首部。它的值是一个对报文主体执行过的编码的列表。如果进行了多种编码,就将其按序排列。

14)User-Agent:列出了你的操作系统的名称和版本,你所使用的浏览器的名称和版本等等信息。

15)Vary:Accept-Encoding  服务器通过 Vary 首部来通知客户端,在服务器端的协商中会使用哪些来自客户端请求的首部 它的值是一个首部列表,服务器会去查看这些首部,以确定将什么内容作为响应发送回给客户端。

16)Accept: 告诉服务器能够发送哪些媒体类型 

例如:Accept:application/json, text/javascript, */*; q=0.01


17)Accept-Charset告诉服务器能够发送哪些字符集

 

18)Accept-Encoding 告诉服务器能够发送哪些编码方式

例如:Accept-Encoding:gzip, deflate


19)Accept-Language:告诉服务器能够发送哪些语言

 

20)Authorization 包含了客户端提供给服务器,以便对其自身进行认证的数据

21)Cookie  客户端用它向服务器传送一个令牌——它并不是真正的安全首部,但隐含了安全功能

22)Cookie2  用来说明请求端支持的 cookie 版本


23)Expires:Expires实体报头域给出响应过期的日期和时间。为了让代理服务器或浏览器在一段时间以后更新缓存中(再次访问曾访问过的页面时,直接从缓存中加载,缩短响应时间和降低服务器负载)的页面,我们可以使用Expires实体报头域指定页面过期的时间。 




上面罗列出了常用的起始行 字段和常用首部报头字段解析,其他的报头字段可以查看相关资料。




    











以上是关于你应该了解的http协议的主要内容,如果未能解决你的问题,请参考以下文章

[接口测试 - 基础篇] 01 你应该了解的协议基础

一篇文章让你彻底了解什么是http

你了解HTTP协议吗??

HTTP,HTTP2.0,SPDY,HTTPS你应该知道的一些事

HTTP协议:当下最主流的应用层协议之一,你确定不了解一下吗?

一文带你了解什么是HTTP协议