post 变成option 请求的三种原因
- Http Options Method
简而言之,OPTIONS请求方法的主要用途有两个:
- 获取服务器支持的HTTP请求方法;
- 用来检查服务器的性能。
- CORS(跨域资源共享)
CORS是一种网络浏览器的技术规范,它为Web服务器定义了一种方式,允许网页从不同的域访问其资源。而这种访问是被同源策略所禁止的。CORS系统定义了一种浏览器和服务器交互的方式来确定是否允许跨域请求。
- 前端
- 客户端使用XmlHttpRequest发起Ajax请求,当前绝大部分浏览器已经支持CORS方式,且主流浏览器均提供了对跨域资源共享的支持。
- 服务器端
如果服务器端未做任何配置,则前端发起Ajax请求后,会得到CORS Access Deny,即跨域访问被拒绝。
- Preflighted Requests(预检请求)
Preflighted Requests是CORS中一种透明服务器验证机制。预检请求首先需要向另外一个域名的资源发送一个 HTTP OPTIONS 请求头,其目的就是为了判断实际发送的请求是否是安全的。
下面的2种情况需要进行预检:
- 简单请求,比如使用Content-Type 为 application/xml 或 text/xml 的 POST 请求;
- 设置自定义头,比如 X-JSON、X-MENGXIANHUI 等。