请求方法
九种 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 的缓存设置生效,所以设置了缓存时间,在这个时间范围内,再次发送请求就不需要进行预检请求了。