使用HTTP协议进行通信时,向请求的URL指定的资源发送请求报文时,采用称为方法的命令。其作用在于,可以指定请求的资源按照期望产生某种行为。note:方法区分大小写,注意使用大写字母。
方法 | 描述 | 支持的HTTP协议版本 |
GET | 发送一个请求来获取服务器上某一资源 | 1.0、1.1 |
POST | 传输实体主体,即向URL指定的资源提交数据或者附加新的数据(例如提交表单或上传文件) | 1.0、1.1 |
PUT | 用来传输文件(或修改已有资源)。要求请求报文的主体中包含文件内容,然后保存到请求URI指定的位置 | 1.0、1.1 |
HEAD | 类似于GET方法,只是不返回报文主体部分。用于获取报文头部 | 1.0、1.1 |
DELETE | 按照请求URI删除指定资源 | 1.0、1.1 |
OPTIONS | 用来查询针对请求URI指定的资源支持的方法 | 1.1 |
TRACE | 回显服务器收到的请求,主要用于测试或诊断。 | 1.1 |
CONNECT | 要求用隧道协议连接代理 | 1.1 |
LINK | 请求建立和资源间的联系 | 1.0 |
UNLINK | 断开连接关系 | 1.0 |
状态码可以告知从服务器端返回的请求结果
类别 | 描述 | |
1xx | Informational(信息性状态码) | 接受的请求正在处理 |
2xx | Success(成功状态码) | 请求正常处理完毕 |
3xx | Redirection(重定向状态码) | 需要进行附加操作以完成请求 |
4xx | Client Error(客户端错误状态码) | 服务器无法处理请求 |
5xx | Server Error(服务器错误状态码) | 服务器处理请求出错 |
301 redirect: 301 代表永久性转移(Permanently Moved)
302 redirect: 302 代表暂时性转移(Temporarily Moved )
Ajax中get请求和post请求的区别:
1、GET请求,请求的数据会附加在URL之后,以?分割URL和传输数据,多个参数用&连接。URL的编码格式采用的是ASCII编码,而不是unicode,即是说所有的非ASCII字符都要编码之后再传输。
POST请求:POST请求会把请求的数据放置在HTTP请求包的包体中。
因此,GET请求的数据会暴露在地址栏中,而POST请求则不会。(在Ajax中:get请求在url的尾部传递参数,而post请求在send方法中传递参数.)
此外POST用于修改和写入数据,GET一般用于搜索排序和筛选之类的操作(淘宝,支付宝的搜索查询都是get提交),目的是资源的获取,读取数据 。
2、传输数据的大小
在HTTP规范中,没有对URL的长度和传输的数据大小进行限制。但是在实际开发过程中,对于GET,特定的浏览器和服务器对URL的长度有限制。因此,在使用GET请求时,传输数据会受到URL长度的限制。
对于POST,由于不是URL传值,理论上是不会受限制的,但是实际上各个服务器会规定对POST提交数据大小进行限制。
3、安全性
POST的安全性比GET的高。比如,在进行登录操作,通过GET请求,用户名和密码都会暴露在URL上,当GET方式请求数据被浏览器缓存起来,别人就可以从浏览器的历史记录中读取到这些数据。除此之外,GET请求提交的数据还可能会造成Cross-site request frogery攻击。
4、GET比POST更快
(1)POST请求包含更多的请求头
因为POST需要在请求的body部分包含数据,所以会多了几个数据描述部分的首部字段(如:content-type),这其实是微乎其微的。
(2)POST在真正接收数据之前会先将请求头发送给服务器进行确认,然后才真正发送数据
POST请求的过程:
(1)浏览器请求tcp连接(第一次握手)
(2)服务器答应进行tcp连接(第二次握手)
(3)浏览器确认,并发送post请求头(第三次握手,这个报文比较小,所以http会在此时进行第一次数据发送)
(4)服务器返回100 Continue响应
(5)浏览器发送数据
(6)服务器返回200 OK响应
GET请求的过程:
(1)浏览器请求tcp连接(第一次握手)
(2)服务器答应进行tcp连接(第二次握手)
(3)浏览器确认,并发送get请求头和数据(第三次握手,这个报文比较小,所以http会在此时进行第一次数据发送)
(4)服务器返回200 OK响应