get 和 post 有什么区别
- 缓存:get 默认有缓存,可被收藏,post 需要设置
- 大小:get 由于浏览器特性,有大小限制 2k,会比 post 小
- 安全:get 参数在 url 展示,相对(只是相对) post 安全
- 数据:get 后退刷新无害,post 会重新提交数据
- 编码:get 只允许 ASCII 字符、post 没有限制,也允许二进制数据
简单请求
GET HEAD POST
预检请求
预检请求(Preflighted requests )是浏览器发起跨域请求时,通过 OPTIONS 方法询问服务器对跨域请求的支持情况(支持的包含请求方法、请求头、数据类型)
触发预检请求的三类条件: 条件一:默认情况下,跨域请求只支持 GET,HEAD,POST 方法,如果不是这三个请求方法(比如:PUT、DELETE、CONNECT、OPTIONS、TRAC...将触发预检请求
条件二:默认情况下,浏览器跨域请求时,会自动添加的请求头(HOST,Referer,Connection、Accept、User-Agent,Accept-Language,Accept-Encoding,Accept-Charset 和 Content-Type),这些请求中还有其他请求头时,那么将触发预检请求。
条件三:浏览器支持的 Content-Type 值为 application/x-www-form-urlencoded,multipart/form-data 和 text/plain。如果是其他数据类型(如 application/json,text/xml...),那么将触发预检请求。