Skip to main content

请求方法

九种 METHOD

请求行携带,全大写

  • GET(获取数据)

  • POST(提交)

  • PUT(完全替换) 用请求有效载荷替换目标资源

  • PATCH(部分修改)

  • DELETE

  • HEAD(与 GET 请求相同但没有响应体)

  • CONNECT(建立隧道) 到 由目标资源标识的服务器的隧道

  • OPTIONS(预检) 描述目标资源的通信选项

  • TRACE(测试) 沿着目标资源的路径执行一个消息环回测试

GET 和 POST 的区别

GET

get 在 url 里,post 在 request body 里 get 有长度限制(主要由于 url 长度限制) get 会暴露敏感 get 请求的参数 query params 查询参数 xxx/?a=1&b=2

GET 从服务器获取资源, POST 向 URI 指定的资源提交数据 GET 是安全且幂等的,POST 是不安全且不幂等的 安全指请求方法是否修改服务器上的资源,幂等指多次相同的操作结果是否相同

  • 应用场景:GET 请求是一个幂等的请求,一般 Get 请求用于对服务器资源不会产生影响的场景,比如说请求一个网页的资源。而 Post 不是一个幂等的请求,一般用于对服务器资源会产生影响的情景,比如注册用户这一类的操作。
  • 是否缓存:因为两者应用场景不同,浏览器一般会对 Get 请求缓存,但很少对 Post 请求缓存。
  • 发送的报文格式:Get 请求的报文中实体部分为空,Post 请求的报文中实体部分一般为向服务器发送的数据。
  • 安全性:Get 请求可以将请求的参数放入 url 中向服务器发送,这样的做法相对于 Post 请求来说是不太安全的,因为请求的 url 会被保留在历史记录中。
  • 请求长度:浏览器由于对 url 长度的限制,所以会影响 get 请求发送数据时的长度。这个限制是浏览器规定的,并不是 RFC 规定的。
  • 参数类型:post 的 body 参数传递支持更多的数据类型。(图片,表单)

减少 OPTIONS 请求次数

OPTIONS 请求次数过多就会损耗页面加载的性能,降低用户体验度。所以尽量要减少 OPTIONS 请求次数,可以后端在请求的返回头部添加:Access-Control-Max-Age:number。它表示预检请求的返回结果可以被缓存多久,单位是秒。该字段只对完全一样的 URL 的缓存设置生效,所以设置了缓存时间,在这个时间范围内,再次发送请求就不需要进行预检请求了。