跳至主要内容

博文

目前显示的是 七月, 2025的博文

浏览器的OPTIONS请求

 浏览器发出多余的 OPTIONS 请求,通常与跨域请求(CORS)和某些特定的请求条件有关。以下是一些常见导致浏览器发出“额外” OPTIONS 请求的情况: 🧠 1. 跨域请求 + 非简单请求 当你从网页发起跨域请求(即请求的域、端口或协议与页面不同),并且该请求不是“简单请求”时,浏览器会先发出 预检请求(preflight) ,即 OPTIONS 请求。 非简单请求的特征: 使用的方法不是 GET 、 HEAD 、 POST ; 或者 POST 请求中 Content-Type 不属于下列之一: application/x-www-form-urlencoded multipart/form-data text/plain 或者设置了自定义的请求头(如 Authorization , X-Token 等)。 📌 示例: fetch("https://api.example.com/data", { method: "PUT", // 非简单方法 headers: { "Content-Type": "application/json" // 非简单 Content-Type }, body: JSON.stringify({ key: "value" }) }); 这会触发一个 OPTIONS 请求作为预检。 🧠 2. 自定义请求头 即便是 GET 或 POST ,只要你添加了非标准头部字段,也会触发 OPTIONS 请求。 例如添加了 Authorization : fetch("/api", { headers: { "Authorization": "Bearer token" } }); 🧠 3. 不同的协议、端口或子域 即便你访问的是同一个主域名,但只要协议或端口不同,也会被视为跨域。 示例: https://example.com 与 http://example.com https://example.com 与 https://a...