什么是 OPTIONS 预检请求?
必须是跨域的场景下,当你通过浏览器发送一个请求时,为了保证跨域安全控制,浏览器不会立即发送该请求,而是自动先发起一个 OPTIONS 请求,询问目标服务器是否允许你真正的请求行为,这就是所谓的预检请求(preflight request)。
另外,预检请求不会携带cookies,即使设置了withCredentials: true或者credentials: 'include'。
哪些请求会触发预检?
跨域场景的前提下,只要满足以下任一条件,就会触发预检请求:
- 请求方法不是
GET、POST或HEAD(如:PUT、DELETE) - 使用了自定义请求头(如:
Authorization、X-Token、Content-Type: application/json),也就是除以下这些之外的:AcceptAccept-LanguageContent-LanguageContent-Type(仅限text/plain、multipart/form-data、application/x-www-form-urlencoded)
2025/3/15大约 3 分钟
