跨域请求为什么可能先发送 OPTIONS 请求?
简答题中等561 次浏览
参考答案与解析
# 核心结论
浏览器执行某些跨源请求前,会先发送一个方法为 OPTIONS 的 CORS 预检请求,询问目标服务器是否允许当前来源使用指定方法和请求头。只有预检响应满足浏览器检查,真实业务请求才会继续发送。预检不用于获取业务数据,而是防止网页在服务器未明确授权时直接发出具有较强副作用能力的非简单跨源请求。并非所有跨源请求都会预检,是否触发取决于请求方法、作者设置的请求头、内容类型等实际组成。
# 底层机制
预检请求通常携带 Origin 和 Access-Control-Request-Method;若真实请求包含需要声明的请求头,还会携带 `Access-Control-Request-Headers
