CORS 配置生成
在线生成 CORS 跨域配置:填写允许的来源、方法、请求头、是否携带凭证与预检缓存时间,得到完整的响应头清单(含每个头的解释)以及 nginx / Express / FastAPI / Spring / Caddy 五种后端的可粘贴代码,并提示通配符与凭证互斥等常见坑。只生成配置,不发请求。
浏览器本地运行所有计算都在你的浏览器里完成,数据不会离开本机。
CORS 规则
所有内容都由自研规则在本地生成:不发起任何请求,也不探测你的服务端;生成结果只是配置与代码片段。
生成结果
填好来源与方法后点击「生成配置」。
这个工具能做什么
- 前后端分离项目第一次联调,浏览器报「No Access-Control-Allow-Origin header is present」,用它把该发的响应头一次列全,再照抄到自己的后端。
- 给不同技术栈的同事配同一套策略:同一份来源 / 方法 / 请求头,直接切换 nginx、Express、FastAPI、Spring 或 Caddy 的片段,避免各自手写出入。
- 排查「带 Cookie 的请求跨域失败」:工具会提醒 `*` 与凭证互斥,并告诉你必须回显 Origin、同时返回 Vary: Origin。
- 上线前自查:确认只放开了必要的方法与请求头,没有把 Authorization 之类敏感头用 `*` 全放开。
示例
输入
来源 https://app.example.com;方法 GET, POST, OPTIONS;允许请求头 Content-Type, Authorization;暴露响应头 X-Total-Count;允许凭证;预检缓存 600 秒;路径 /api/
输出
Access-Control-Allow-Origin: https://app.example.com;Access-Control-Allow-Methods: GET, POST, OPTIONS;Access-Control-Allow-Headers: Content-Type, Authorization;Access-Control-Expose-Headers: X-Total-Count;Access-Control-Allow-Credentials: true;Access-Control-Max-Age: 600;Vary: Origin(共 7 个响应头,另附 Express 片段 `origin: 'https://app.example.com', … credentials: true, maxAge: 600`)
把来源改成 `*` 会立刻报错:允许携带凭证时不能用通配符来源,这是 fetch 标准的硬性限制。
常见问题
为什么允许携带凭证时不能用 `*`?
Fetch 标准规定:当请求带有凭证(Cookie、Authorization)时,`Access-Control-Allow-Origin` 必须是具体来源,不能是 `*`,否则浏览器直接拒绝这个响应。原因是 `*` 会把带凭证的响应暴露给任意站点。本工具在生成前就会拦下这个组合并提示。
Vary: Origin 到底解决什么问题?
如果按请求的 Origin 回显 `Access-Control-Allow-Origin`,那么同一个 URL 对不同来源会返回不同的响应头。缓存层(CDN、反向代理、浏览器缓存)如果不知道这一点,就可能把给 A 站点的响应发给 B 站点,导致跨域失败或数据泄漏。`Vary: Origin` 就是告诉它们「这个响应随 Origin 变化」。
Access-Control-Max-Age 该设多少?
它是预检结果的缓存秒数,Chrome 等浏览器有上限(通常 600 秒,Firefox 上限 86400)。设 600–3600 是常见做法:能省掉大量 OPTIONS 请求,策略调整后最多等这么久就生效。设为 0 表示不发送这个头,浏览器每次都会重新预检。
自定义请求头为什么必须显式列出?
只有安全列表请求头(Accept、Accept-Language、Content-Language、Content-Type 的部分取值)能不经过预检直接发送。Authorization、X-Api-Key、X-Requested-With 这些都会触发预检,服务端必须在 `Access-Control-Allow-Headers` 里列出它们,否则预检返回的允许列表不匹配,真实请求根本不会发出。
这个工具会帮我改服务端配置吗?
不会。它只生成响应头清单与配置片段,既不发请求也不探测你的服务端,改动必须由你手动完成。生成前可以用 `curl -i -X OPTIONS -H "Origin: https://app.example.com" -H "Access-Control-Request-Method: POST" https://your-api/...` 验证线上实际返回的头。
关键词:corsaccess-control-allow-originpreflightnginx corsexpress corsfastapi corsCORS 配置跨域预检请求跨域请求头通配符来源凭证