关于浏览器预检请求
浏览器在什么情况下会发起options预检请求?
在非简单请求且跨域的情况下,浏览器会发起options预检请求。
关于简单请求和复杂请求:
1 简单请求
简单请求需满足以下两个条件
1) 请求方法是以下三种方法之一:
- HEAD
- GET
POST
2) HTTP 的头信息不超出以下几种字段Accept
- Accept-Language
- Content-Language
- Last-Event-ID
- Content-Type: 只限于 (application/x-www-form-urlencoded、multipart/form-data、text/plain)
2 复杂请求
非简单请求即是复杂请求
常见的复杂请求有:
1) 请求方法为 PUT 或 DELETE
2) Content-Type 字段类型为 application/json
3) 添加额外的http header 比如access_token
在跨域的情况下,非简单请求会先发起一次空body的OPTIONS请求,称为”预检”请求,用于向服务器请求权限信息,等预检请求被成功响应后,才发起真正的http请求。
浏览器的预检请求结果可以通过设置Access-Control-Max-Age进行缓存
如何解决跨域问题
请看我的另一篇文章: 如何解决前端跨域问题
本文作者 : Simple
原文链接 : https://simplecodecx.github.io/blog/20190414/76328cc8.html
版权声明 : 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!