请求方法

HTTP 构建请求行时会带上请求方法

GET /page.html
  • GET:请求服务器资源 http/0.9 最早只有 get 方法,即使如此,最开始也预见性地规范了请求行格式,为后续的更多方法提供了便利
  • POST:携带请求体向服务端发送数据
  • PUT:上传文件,更新数据;
  • DELETE:删除服务器上的对象;
  • HEAD:获取报文首部,与 GET 相比,不返回报文主体部分;
  • OPTIONS:询问支持的请求方法,用来跨域请求;
  • CONNECT:要求在与代理服务器通信时建立隧道,使用隧道进行 TCP 通信;
  • TRACE: 回显服务器收到的请求,主要⽤于测试或诊断。

get 和 post 区别

  • 幂等:get 是幂等的,对服务端数据不产生影响
  • 缓存:浏览器会对 get 请求数据进行缓存
  • 请求体:get 不携带请求实体
  • 安全:get 参数明文拼接在 url 后,不安全
  • 参数类型:post 支持更多的数据类型
  • url 长度:浏览器限制了 get 请求 url 的长度
GET的长度值 = URL(2083)- (你的Domain+Path)-2(2是get请求中?=两个字符的长度)

post 和 put 区别

从语义上单纯的理解就是 put 是更新数据,post 是新增数据。

options 的作用

  • 使用 OPTIONS 方法对服务器发起请求,以检测服务器支持哪些 HTTP 方法:
curl -X OPTIONS http://example.org -i

# 响应报文
HTTP/1.1 200 OK
Allow: OPTIONS, GET, HEAD, POST
  • 在 CORS 中,可以使用 OPTIONS 方法发起一个预检请求,以检测实际请求是否可以被服务器所接受。
OPTIONS /resources/post-here/ HTTP/1.1

# 响应报文
HTTP/1.1 200 OK
Access-Control-Allow-Origin: http://foo.example
Access-Control-Allow-Methods: POST, GET, OPTIONS
# 服务器实际请求所携带的自定义首部字段
Access-Control-Allow-Headers: X-PINGOTHER, Content-Type
Access-Control-Max-Age: 86400