CORS 头构建器
从结构化字段构建标准 CORS 响应头 — Access-Control-Allow-Origin、-Methods、-Headers、-Credentials、-Max-Age 和 -Expose-Headers — 准备粘贴到服务器响应中。
输入
允许访问资源的源。使用 * 允许所有源 — 但不能与凭证组合。
逗号分隔的 HTTP 方法列表,允许用于跨域请求。
逗号分隔的请求头列表,浏览器可以发送。
浏览器可以缓存预检结果的时间(以秒为单位)。留空可省略。
可选。逗号分隔的响应头列表,JavaScript 可以读取。
输出
每行一个头 — 直接粘贴到服务器响应配置中。
使用此工具的更多方式
REST API
curl -X POST https://api.iotools.cloud/v1/tool/cors-headers-builder \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"origin": "https://example.com",
"methods": "GET, POST",
"headers": "Content-Type, Authorization",
"allowCredentials": "true",
"maxAge": "86400",
"exposeHeaders": ""
}'替换成您账户中的密钥。工具的字段即为请求体——没有额外包装。
让 AI 代理执行
Use the IOTools `cors-headers-builder` tool (CORS Headers Builder) on this input:
YOUR_INPUT_HERE将此粘贴给任何已连接 IOTools MCP 服务器的代理,再加上您的输入内容。
嵌入式小组件
<iframe
src="https://iotools.cloud/embed/cors-headers-builder/"
width="100%" height="520" frameborder="0" scrolling="no" loading="lazy"
title="CORS 头构建器 — iotools.cloud"
sandbox="allow-scripts allow-forms allow-same-origin allow-downloads allow-popups allow-popups-to-escape-sandbox"
allow="clipboard-write"
style="width:100%;border:1px solid #e5e7eb;border-radius:12px;overflow:hidden"></iframe>
<script src="https://iotools.cloud/embed.js" async></script>把它放到您自己的页面上——免费,无需密钥,只需保留一个反向链接。
| 每次 API/MCP 调用费用 | 5 积分起 |
|---|---|
| 需要更多积分? | 查看定价 |
也可通过
使用指南
什么是 CORS 头构建器?
跨源资源共享(CORS)是浏览器用来决定在一个源上运行的网页(https://app.example.com)是否允许向另一个源的服务器发送请求(https://api.example.com)的机制。默认情况下,浏览器会阻止这些请求 — 服务器必须通过发回特定的 Access-Control-* 响应头集来选择允许。这个工具从一些结构化字段构建这些头,所以你不需要记住确切的头名称、逗号分隔规则,或让人困惑的 true/* 特性。
如何使用
- 设置允许的源 — 要么是一个特定的源如
https://example.com,要么是*允许任何网站(仅在凭证关闭时有效)。 - 列出 API 接受的允许的方法和允许的头,用逗号分隔。
- 如果请求需要携带 cookies 或
Authorization头,切换允许凭证开启 — 这会强制你使用特定源而不是*。 - 设置 Max-Age 来控制浏览器缓存预检
OPTIONS响应的时间,还可以列出暴露的头,用于客户端 JavaScript 需要读取的任何自定义响应头。 - 生成的 CORS 头框会自动更新 — 将其复制到服务器响应中,或作为文本文件下载。
每个头的作用
- Access-Control-Allow-Origin — 哪个源可以读取响应。这是实际解锁跨域访问的头;没有它,浏览器会阻止响应,不管其他设置。
- Access-Control-Allow-Methods — 服务器从跨域请求中接受的 HTTP 方法,在响应预检
OPTIONS请求时发送。 - Access-Control-Allow-Headers — 跨域客户端可以设置的请求头(例如
Content-Type、Authorization)。 - Access-Control-Allow-Credentials — 必须是字面字符串
true,浏览器才会向请求页面暴露 cookies 和 HTTP 认证。它的存在也需要特定的Allow-Origin,从不是*。 - Access-Control-Max-Age — 浏览器在发送另一个
OPTIONS请求前可以缓存预检结果的秒数。较高的值意味着较少的预检,但权限更改的推出更慢。 - Access-Control-Expose-Headers — 默认情况下,JavaScript 只能读取一小组"安全"响应头。在这里列出任何自定义头(例如
X-Request-Id)以通过fetch/XMLHttpRequest使其可读。
常见问题
为什么我不能将 * 与凭证一起使用?
这是浏览器的一个有意的安全限制。如果 Access-Control-Allow-Credentials: true 被允许与通配符源一起使用,世界上任何网站都可以使用已登录用户的 cookies 向你的 API 发送认证请求。浏览器拒绝尊重这种组合 — 这个工具会在你部署它之前标记它。
什么触发预检(OPTIONS)请求?
简单请求 — GET、HEAD 或带标准内容类型的 POST — 直接发送到服务器。其他任何情况(PUT/DELETE/PATCH 方法、自定义头如 Authorization,或 JSON Content-Type)会使浏览器先自动发送预检 OPTIONS,检查 Access-Control-Allow-* 头,然后才发送真实请求。
我需要 Access-Control-Expose-Headers 吗?
仅当你的前端 JavaScript 读取超出默认安全列表的响应头时(Cache-Control、Content-Language、Content-Type、Expires、Last-Modified、Pragma)。分页头、请求 ID 和速率限制计数器是需要它的常见情况。
我可以允许多个特定源吗?
CORS 每个响应中的 Access-Control-Allow-Origin 只允许一个静态值。要支持多个已知源,你的服务器需要检查传入的 Origin 请求头是否与允许列表匹配并动态回显匹配的 — 这个工具一次为一个源构建头块。
隐私
这个工具完全在你的浏览器中运行。你输入的源、方法和头永远不会发送到或存储在我们的服务器上。