浏览器何时会发送一个 options 请求
Jun 4, 2018
浏览器出现 http method options 请求的作用是什么?
主要的作用有两个
- 获取服务器支持的 http 请求方法
- 用来检查服务器的性能
谈到 options 请求,不得不说的就是 cors(跨域资源共享)
CORS 是一种网络浏览器的技术规范,它为 Web 服务器定义了一种方式,允许网页从不同的域访问其资源。而这种访问是被同源策略所禁止的。CORS 系统定义了一种浏览器和服务器交互的方式来确定是否允许跨域请求。
使用 CORS 的方式非常简单,但是需要同时对前端和服务器端做相应处理。
前端
客户端使用 XmlHttpRequest 发起 ajax 请求,当前绝大部分浏览器已经支持 cors 方式,且主流浏览器均提供了对跨域资源共享的支持。服务器端
如果服务器端未做任何配置,则前端发起 ajax 请求后,会得到 cors access deny,即跨域访问被拒绝。
Preflighted Requests 是 CORS 中一种透明服务器验证机制。预检请求首先需要向另外一个域名的资源发送一个 HTTP OPTIONS 请求头,其目的就是为了判断实际发送的请求是否是安全的。
下面的情况需要进行预检:
一个简单的请求如下:
HTTP 方法是下列之一
- HEAD
- GET
- POST
HTTP 头包含 - Accept
- Accept-Language
- Content-Language
- Last-Event-ID
Content-Type,但仅能是下列之一
- application/x-www-form-urlencoded
- multipart/form-data
- text/plain
任何一个不满足上述要求的请求,即被认为是复杂请求。一个复杂请求不仅有包含通信内容的请求,同时也包含预请求 (preflight request)。