HTTP请求方法的区别-计网(2)

Date:

HTTP 提供了几种请求方法,有时候发现POST和GET好像可以解决所有问题,HTTP Method 是规定?规范?还是约定俗成?


目录

HTTP:不同请求方法的区别

请求方法向服务器描述了客户端发出请求的动作类型。

HTTP只是协议,不同请求方法只是在语义层面有区别,但服务器和浏览器通常有一些约定俗成的规范行为,使得不同请求方法区别很大。

请求方法也是可以自定义的,只需要改Header里的method,但是一般不会这么用😂

  • GET: 请求资源,无需请求体
    • 从技术上,HTTP 标准文档规定GET是可以携带请求体的
    • 从标准和行业规范上,GET请求不应该携带请求体,一些浏览器会忽略Body
  • POST: 提交数据, 带请求体

  • PUT: 修改数据, 带请求体

  • DELETE: 删除数据, 无需请求体

  • OPTIONS: 在跨域请求时,浏览器会先发送OPTIONS请求(预检请求),询问服务器是否允许跨域

  • TRACE: 用于测试或诊断,服务器会返回请求的完整路径

  • CONNECT

具体一些,GET与POST的区别

和上文一样,本质是语义层面的区别,但服务器与浏览器通常有约定俗成的规范行为,造成了区别。

  1. 浏览器发送GET时,不会附带Body,如果你自己用个Node去发,那想带就带
  2. GET用请求参数携带信息,数据量受浏览器限制,POST放Body自然没有限制
  3. GET只能传ASCII数据,现代浏览器会自动进行URL-Encoding
  4. GET请求信息会暴露在URL中,所以敏感信息不要用GET,用POST
  5. GET请求会被浏览器缓存,可以添加到书签完整复现