# 15.GET和POST
# 一:区别
(1)post 更安全(不会作为 url 的一部分,不会被缓存、保存在服务器日志、以及浏览器浏览记录中)
- 可以做个简短的测试,使用 ajax 采用 get 方式请求静态数据(比如 html 页面,图片)的时候,如果两次传输的数据相同,第二次以后消耗的时间将会在 10ms 以内(chrome 测试),而 post 每次消耗的时间都差不多。
(2)post 发送的数据更大(get 有 url 长度限制) (3)post 能发送更多的数据类型(get 只能发送 ASCII 字符) (4)post 比 get 慢 (5)post 用于修改和写入数据,get 一般用于搜索排序和筛选之类的操作(淘宝,支付宝的搜索查询都是 get 提交),目的是资源的获取,读取数据
(6)get 的总耗是 post 的 2/3 左右
# POST 的预检请求 OPTIONS
- 作用:可以去试探服务器能不能处理我后续要发起的请求,因为有些请求服务器无法处理
- 什么情况:
- 请求的方法不是 GET/HEAD/POST
- POST 请求,但是是复杂的 POST 请求(指 Content-type 不是 application/x-www-form-urlencoded、multipart/form-data、text/plain 这种比较常见的。
- 自定义请求头 header。(例如鹰眼系统的鉴权,就是自定义了一个 authorization 的请求头,用来放 token 信息,可以防止 CSRF)
- 如果 options 返回 500,那就不会在发送后续的请求。
- 避免 OPTIONS 请求的方法
- 调整请求方法
- 去除自定义 header
- 修改 Content-Type,基本可以避免该请求发出 OPTIONS 预检请求。
- (也就是说跨域不一定触发 OPTIONS 请求)