名称 | 描述 |
请求方法 | OPTIONS |
用途 | 用来发起预检请求,以检查服务器是否允许跨域请求,获取服务器支持的HTTP请求方法,检查服务器性能。 |
触发条件 | 当发起跨域请求且请求不符合简单请求的条件时触发,简单请求指:请求方法是GET、POST、HEAD之一,且没有自定义的请求头,以及请求的ContentType是application/xwwwformurlencoded、multipart/formdata、text/plain中的一种。 |
请求头部 | 可能包含以下头部:
Origin: 指示请求的源(域名、协议、端口)。
AccessControlRequestMethod: 指示实际请求将使用的HTTP方法。
AccessControlRequestHeaders: 如果有自定义头部,将在此列出。 |
服务器响应 | 包含以下头部信息:
AccessControlAllowOrigin: 指示哪些源可以访问资源。
AccessControlAllowMethods: 指示服务器支持的HTTP方法。
AccessControlAllowCredentials: 指示是否允许携带凭证(如Cookies)。
AccessControlAllowHeaders: 如果服务器支持自定义请求头部,将在此列出。
AccessControlMaxAge: 指示预检请求结果可以缓存的时间(秒)。 |
作用 | CORS预检请求通过OPTIONS方法,使得浏览器可以确认是否可以安全地发送实际的跨域请求。 |
浏览器行为 | 在发送实际请求前,浏览器自动发起OPTIONS预检请求,并根据服务器响应决定是否继续发送实际请求。 |
配置示例 | 在服务器端配置示例(以Node.js的Express框架为例):
app.options('/api', (req, res) => {
res.set('AccessControlAllowOrigin', '*');
res.set('AccessControlAllowMethods', 'GET, POST, PUT');
res.set('AccessControlAllowHeaders', 'ContentType, Authorization');
res.status(204).end();
}) |
兼容性 | 绝大多数现代浏览器都支持CORS和OPTIONS预检请求。 |