文章目录
1. 请求
1.1 请求报文结构
1.2 请求行
1.2.1 请求方法
- 幂等性:不管进行多少次重复操作,都是实现相同的结果
- GET 查:具有幂等性
GET方法要求服务器将URL定位的资源放在响应报文的数据部分,发送给客户端。请求数据以地址的形式表现在请求行,? 后是请求的参数,&拼接参数,传递参数长度受浏览器限制
- DELETE 删:具有幂等性
- POST 狭义:增,不具有幂等性
POST方法将请求参数封装在HTTP请求数据中,以名称/值的形式出现,可以传输大量数据,这样POST方式对传送的数据大小没有限制,而且也不会显示在URL中。POST方式请求行中不包含数据字符串,这些数据保存在“请求数据”部分,各数据之间也是使用‘&’符号隔开。
比如:POST http://www.forum.com/articles
的语义是在 http://www.forum.com/articles
下创建一篇帖子,HTTP响应中应包含帖子的创建状态以及帖子的URI。两次相同的POST请求会在服务器端创建两份资源,它们具有不同的URI。所以,POST方法不具备幂等性。
- PUT 狭义:改,具有幂等性
PUT所对应的URI是要创建或更新的资源本身。比如:PUT http://www.forum/articles/4231
的语义是创建或更新ID为4231的帖子。对同一URI进行多次PUT的副作用和一次PUT是相同的。因此,PUT方法具有幂等性。
POST方法和PUT方法请求最根本的区别是请求URI(Request-URI)的含义不同。POST请求里的URI 指示一个能处理请求实体的资源(译注:此资源可能是一段程序,如jsp 里的servlet) 。此资源可能是一个数据接收过程,一个网关(gateway,注:网关和代理的区别是:网关可以进行协议转换,而代理不能,只是起代理的作用,比如缓存服务器其实就是一个代理),或者一个单独接收注释的实体。对比而言,PUT方法请求里的URI标识请求里封装的实体一一用户代理知道URI 意指什么,并且服务器不能把此请求应用于其它资源(resource)。如果服务器期望请求被应用于一个不同的URI,那么它必须发送301(永久移动)响应;用户代理可以自己决定是否重定向请求。一个单独的资源可能会被许多不同的URI指定。如:一篇文章可能会有一个URI指定当前版本,而这个URI区别于这篇文章其它特殊版本的URI。这种情况下,对一个通用URI的PUT请求可能会导致其资源的其它URI请求被源服务器重定义。HTTP/1.1没有定义PUT方法对源服务器的状态影响。
- PATCH、HEAD(仅请求响应首部)、OPTIONS(返回请求的资源所支持的方法)、TRACE(追求一个资源请求中间所经过的代理)
1.2.2 请求URL
1.2.3 请求协议
常用的有HTTP/1.0和HTTP/1.1
1.3 请求头
-
Accpet
- 告诉服务端,客户端接收什么类型的响应
-
Referer
- 表示这是请求是从哪个URL进来的,比如想在网上购物,但是不知道选择哪家电商平台,你就去问度娘,说哪家电商的东西便宜啊,然后一堆东西弹出在你面前,第一给就是某宝,当你从这里进入某宝的时候,这个请求报文的Referer就是www.baidu.com
-
Cache-Control
- 对缓存进行控制,如一个请求希望响应的内容在客户端缓存一年,或不被缓可以通过这个报文头设置
-
Accept-Encoding
- 这个属性是用来告诉服务器能接受什么编码格式,包括字符编码,压缩形式(一般都是压缩形式),例如:Accept-Encoding:gzip, deflate(这两种都是压缩格式)
-
Host
- 指定要请求的资源所在的主机和端口
-
User-Agent
- 告诉服务器,客户端使用的操作系统、浏览器版本和名称
1.4 请求数据
2. 响应
2.1 响应报文结构
2.2 状态行
2.2.1 协议版本
2.2.2 状态码
参考链接:常见常用的网络状态码
2.2.3 状态码描述
2.3 响应头
-
Cache-Control
- 响应输出到客户端后,服务端通过该属性告诉客户端该怎么控制响应内容的缓存
-
ETag
- 表示你请求资源的版本,如果该资源发生啦变化,那么这个属性也会跟着变
-
Location
- 在重定向中或者创建新资源时使用
-
Set-Cookie
- 服务端可以设置客户端的cookie
2.4 响应正文
3. 参考链接
-
HTTP请求头和响应头详解:https://www.jianshu.com/p/9a68281a3c84
-
post 和 put请求方法区别点简析:https://www.jianshu.com/p/e0b39b52672c
4. 扩展:http请求与响应全过程
参考链接:http请求与响应全过程