你应该了解的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请求
例如:
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协议的主要内容,如果未能解决你的问题,请参考以下文章
HTTP,HTTP2.0,SPDY,HTTPS你应该知道的一些事