HTTP/1.1协议支持的请求方法

https://blog.csdn.net/caoxiaohong1005/article/details/83022858

1 GET

  • 功能:GET 方法用于获取由 Request-URI 所标识的资源的信息

  • 默认方法:GET方法是默认的HTTP请求方法,例如当我们通过在浏览器的地址栏中直接输入网址的方式去访问网页的时候,浏览器采用的就是 GET 方法向服务器获取资源。

  • 使用GET方法来提交表单数据存在的问题?

    • GET方法提交的表单数据只经过了简单的编码,存在着安全隐患
    • 提交的数据量不能太,这是因为浏览器对URL的长度有限制,而提交的数据是作为URL请求的一部分
    • 该方法的响应是可缓存的
  • 请注意,查询字符串(名称/值对)是在 GET 请求的 URL 中发送的

  • GET 请求可被缓存:chrome下和firefox下如果检测到get请求的是静态资源,则会缓存如果是数据,则不缓存,但是IE这个傻X啥都会缓存起来

  • GET 请求保留在浏览器历史记录中

  • GET 请求可被收藏为书签

  • GET 请求不应在处理敏感数据时使用

  • GET 请求有长度限制 ,大多数浏览器通常都会限制url长度在2K个字节

  • GET 请求只应当用于取回数据

  • 只接受ASCII字符的参数的数据类型

  • get效率高

2 POST

功能:GET方法的一个替代方法,它主要是向Web服务器提交表单数据尤其是大批量的数据,克服了GET方法中的信息无法保密数据量太小的缺点。该方法的响应是不可缓存的,除非响应里有合适的Cache-Control或者Expires头域。

  • 查询字符串(名称/值对)是在 POST 请求的 HTTP 消息主体中发送的
  • POST 请求不会被缓存
  • POST 请求不会保留在浏览器历史记录中
  • POST 不能被收藏为书签
  • POST 请求对数据长度没有要求
  • POST支持多种编码方式
  • post请求包含更多的请求头
  • post不能进行管道化传输

3 为什么get比post效率高

最重要原因: post在真正接受数据之前会先将请求头发送给服务器进行确认,然后才真正发送数据。

3.1 post 请求过程

  1. 浏览器请求tcp连接(第一次握手)
  2. 服务器答应进行tcp连接(第二次握手)
  3. 浏览器确认,并发送post请求头(第三次握手,这个报文比较小,所以http会在此时进行第一次数据发送
  4. 服务器返回100 continue响应
  5. 浏览器开始发送数据
  6. 服务器返回200 ok响应

3.2 get 请求过程

  1. 浏览器请求tcp连接(第一次握手)
  2. 服务器答应进行tcp连接(第二次握手)
  3. 浏览器确认,并发送get请求头和数据(第三次握手,这个报文比较小,所以http会在此时进行第一次数据发送
  4. 服务器返回200 ok响应

4 DELETE

  • 功能:DELETE方法请求源服务器删除请求URI指定的资源
  • 该方法的响应是不能被缓存

5 PATCH

  • 功能:用来更新局部资源
  • 区分于PUT:PATCH方法是新引入的,是对PUT方法的补充,用来对已知资源进行局部更新。put虽然也是更新资源,但要求前端提供的一定是一个完整的资源对象

猜你喜欢

转载自blog.csdn.net/csdnlijingran/article/details/88357932