CORS

CORS 响应头生成器

生成静态 CORS 响应头,核对已发生预检的参数

API 与 HTTP
🔒 100% 本地运行 — 你的数据不会离开当前页面
由 Evan 维护•最近更新:2026年9月30日
CORS 响应配置

输出是单个静态来源的配置,不会动态回显任意 Origin。多来源服务器应先验证自己的允许列表。null 来源也可能来自沙箱页面或本地文件,应按业务需求决定是否允许。

生成结果

生成后显示响应头及服务器片段。

服务器片段只设置响应头;请放入正确上下文,并配置 OPTIONS 响应与实际接口。未模拟响应状态、重定向、缓存、私网/本地网络权限或浏览器扩展策略。

检查已发生的预检参数

从浏览器的 OPTIONS 请求复制 Origin、Access-Control-Request-Method 和 Access-Control-Request-Headers。这里假设预检已经发生,不判断普通请求是否需要预检。头列表只填写浏览器列出的非安全头名称。

按 Fetch 规范要求,Authorization 必须显式允许,不能只用 *。部分 Chrome 版本的实测行为不同;本工具保留规范判断,不保证任意浏览器都会得到相同结果。CORS 失败也不代表请求一定未发送。

配置只在浏览器处理,不访问请求来源或保存草稿。

页面阅读模式

完整说明还包括常见问题处理、操作示例、代码片段、FAQ 和相关工具,便于核对结果或排查问题。

工具说明

CORS 响应头生成器为单个静态来源配置允许方法、请求头、可被脚本读取的响应头、凭据和预检缓存秒数。工具会检查来源格式、标记列表及 Max-Age,并拒绝凭据与通配来源的组合。输出包含 Node/Express 及可表达时的 Nginx 设置响应头语句,但这些语句不会自动实现接口或处理 OPTIONS。独立检查区用于比较从实际浏览器预检复制的参数与生成配置,采用有限的 Fetch 规范模型,区分安全方法和不同凭据模式下的通配符语义。不预测是否需要预检、不动态回显来源、不访问服务器,也不认证实际浏览器一定放行。

生产可用片段

发生预检的 GET 不要求 Allow-Methods 再列出 GET

text

浏览器预检参数:
Origin: https://app.example.com
Access-Control-Request-Method: GET
Access-Control-Request-Headers: x-trace
凭据模式:omit

相关响应头:
Access-Control-Allow-Origin: https://app.example.com
Access-Control-Allow-Headers: X-Trace

即使自定义头触发预检,GET 仍属于安全方法。本例只检查所填参数,不发送 OPTIONS,也不验证实际服务器响应。

推荐工作流

常见问题

工具会实现动态来源回显吗?

不会,输出仅使用单个静态来源。多个来源应先在服务器验证允许列表,再选择响应来源;不要没有策略地照抄任意请求 Origin。

预检检查区应该填什么?

从真实 OPTIONS 请求复制 Origin、Access-Control-Request-Method 和 Access-Control-Request-Headers。请求头输入是浏览器生成的非安全头名称列表,不是原请求的全部头。

GET 或 POST 必须列入 Allow-Methods 吗?

GET、HEAD 和 POST 属于 CORS 安全方法。在 Fetch 预检算法中,不要求它们出现在 Allow-Methods;允许的请求头等其他条件仍需满足。

* 能放行 Authorization 或带凭据请求吗?

Fetch 规范要求显式列出 Authorization。credentials: include 下,方法和请求头通配符的语义也会改变,且不能使用通配来源。部分浏览器实现存在差异,本检查保留规范规则。

服务器片段是完整的 CORS 中间件吗?

不是,它们只设置响应头。实际接口、OPTIONS 状态和放置位置仍需配置。值中含 $ 时,Nginx 会把它解释为变量,因此不输出 Nginx 片段。工具把 Max-Age 限制为 0–86400 秒,浏览器还可能采用更低上限。

检查没有覆盖什么?

不测试响应状态、重定向、缓存、Cookie、私网/本地网络权限及浏览器扩展。CORS 失败可能发生在请求已发送之后。工具不访问来源地址,也不保存配置草稿。

继续浏览