CORS 检查器
检查 API 是否接受来自你 origin 的请求。运行预检 OPTIONS 和实际请求,显示所有 Access-Control-* 头部。
CORS 是什么?
CORS (Cross-Origin Resource Sharing) 是浏览器的安全机制。默认情况下,https://a.com 上的脚本无法读取 https://b.com 的响应。b.com 的服务器必须通过发送 Access-Control-Allow-Origin 头部显式允许。对非简单请求 (JSON POST、自定义头等),浏览器会先发送 OPTIONS "预检" 检查权限 — 如果服务器响应不允许你的 origin、方法或头部,实际请求会被阻止,DevTools 中会出现 CORS 错误。
CORS 响应头部说明
Access-Control-Allow-Origin指定允许哪个 origin。可以是单个 origin、"*"(任何),或回显请求的 origin。
Access-Control-Allow-Credentials"true" 时浏览器发送 cookies/认证头。不能与 Allow-Origin: * 组合。
Access-Control-Allow-Methods服务器允许的 HTTP 方法。仅在预检响应中相关。
Access-Control-Allow-Headers服务器允许的请求头。适用于 Authorization、自定义 X-* 等非简单头部。
Access-Control-Expose-Headers浏览器可暴露给 JavaScript 的响应头。默认仅一个短白名单。
Access-Control-Max-Age浏览器可缓存预检结果的秒数。较大值避免重复 OPTIONS。
CORS 检查器常见问题
为什么浏览器报 CORS 错误但这个工具能显示头部?
CORS 由浏览器执行,不是服务器。本工具在我们后端运行,因此不受 CORS 规则约束 — 我们看到原始响应。你的浏览器根据 Access-Control-* 头部在客户端阻止请求。如果此处显示的头部与你的 origin/方法/头部不匹配,即使服务器有响应,浏览器也会阻止。
什么是预检 OPTIONS 请求?
对于 "非简单" 跨源请求 (除带基本头的简单 GET/HEAD/POST 之外的任何请求),浏览器先发送 OPTIONS 询问 "能否发送此请求?"。服务器以 Access-Control-Allow-Methods、Allow-Headers、Allow-Origin 响应。若允许你的实际请求,浏览器继续;否则阻止。
为什么 Access-Control-Allow-Origin: * 对我的请求不够?
如果请求包含凭据 (cookies、Authorization 头、TLS 客户端证书),浏览器拒绝 "*",要求指定 origin。服务器必须在 Access-Control-Allow-Origin 中回显你的精确 origin 并设置 Access-Control-Allow-Credentials: true。
CORS 适用于服务器到服务器的请求吗?
不。CORS 纯粹是浏览器安全特性。curl、服务端 Node fetch、Postman 或任何非浏览器客户端完全忽略 CORS。如果你在非浏览器环境看到 "CORS 错误",真正的问题在别处 (网络、认证、URL 错误)。
如何修复 CORS 错误?
在服务器侧修复,不是客户端。添加正确的 Access-Control-Allow-Origin (你的前端 origin)、Allow-Methods (你用的 GET/POST 等)、Allow-Headers (自定义或认证头)。若使用凭据,添加 Allow-Credentials: true。确保处理 OPTIONS 并返回 2xx。禁用 CORS 的浏览器扩展是开发捷径 — 切勿让真实应用依赖它们。