不喜欢广告? 无广告 今天

CORS Headers Builder & Validator

开发人员
广告 移除?

起源

允许来源的逗号分隔列表

允许的方法

允许的标头

允许的请求标头的逗号分隔列表

选项

浏览器缓存预检结果的时间(默认值:86400 = 24 小时)
浏览器可从响应中访问的标头

服务器代码片段

广告 移除?

指导

CORS 标头生成器和验证器

CORS Headers Builder & Validator

使用可视化配置器构建正确的 CORS(跨源资源共享)标头。设置允许的来源、方法、标头和凭据,然后获取 Express.js、Nginx、Apache、Django、FastAPI、Flask 和 Go 的生成的 HTTP 标头和即用型代码片段。实时验证可在生产环境之前捕获常见的 CORS 配置错误。

如何使用

使用表单控件配置您的 CORS 策略:选择来源模式(通配符、特定来源或反映)、选择允许的 HTTP 方法、添加允许的标头以及在需要时启用凭据。该工具可即时生成正确的 Access-Control-* 标头,显示常见错误的验证警告,并为 7 种服务器框架提供可复制的代码片段。使用 CORS 解释器部分快速回顾 CORS 的工作原理。

特征

  • 可视化 CORS 配置器 — 使用可视化配置器设置 Access-Control-Allow-Origin(通配符、特定来源或反映)、方法(GET/POST/PUT/PATCH/DELETE/OPTIONS/HEAD)、自定义标头、凭据、最大年龄和公开标头。
  • 实时标头生成 — 在您进行配置时,即可即时查看完整的 CORS 响应标头和预检(OPTIONS)标头。
  • 7 种服务器框架代码片段 — 可复制的代码,适用于 Express.js、Nginx、Apache (.htaccess)、Django (django-cors-headers)、FastAPI (CORSMiddleware)、Flask (flask-cors) 和 Go (net/http)。每个代码片段都是根据您的配置动态生成的。
  • 配置验证 — 颜色编码的警告可捕获常见的 CORS 错误:通配符 + 凭据(无效)、POST 请求缺少 Content-Type 标头、预检缺少 OPTIONS 方法、max-age 值太短导致预检流量增加。
  • 快速添加标头按钮 — 常用标头的单键按钮:Content-Type、Authorization、X-Requested-With、Accept、Origin。
  • 预检标头 — 当预检(OPTIONS)响应标头与常规 CORS 标头不同时,将分开显示。
  • CORS 解释器 — 可折叠的参考资料,涵盖简单请求与预检请求、触发预检的条件、每个标头的作用以及为什么凭据 + 通配符无效。

CORS 标头解释

Access-Control-Allow-Origin: 哪些来源可以访问资源。通配符 (*) 允许所有来源,或指定确切来源。
Access-Control-Allow-Methods: 允许跨源请求使用的 HTTP 方法。
Access-Control-Allow-Headers: 客户端可以发送的请求标头。
Access-Control-Allow-Credentials: 浏览器是否应包含 Cookie/身份验证。不能与通配符来源一起使用。
Access-Control-Max-Age: 浏览器缓存预检结果的时间(秒)。
Access-Control-Expose-Headers: 浏览器可以通过 JavaScript 访问的响应标头。

广告 移除?

什么是 CORS 以及为什么我需要它?

CORS(跨源资源共享)是一种浏览器安全机制,用于控制哪些网站可以向您的服务器发出请求。默认情况下,浏览器会阻止跨源请求(例如,您的 app.example.com 前端调用您的 api.example.com API)。CORS 标头会告知浏览器允许哪些来源、方法和标头。如果没有正确的 CORS 配置,您的 API 将能在服务器到服务器之间正常工作,但在从浏览器调用时会失败 — 这是 Web 开发中最常见的问题之一。

为什么我不能将通配符 (*) 与凭据一起使用?

当 Access-Control-Allow-Credentials 为 true 时,浏览器要求服务器指定确切的来源 — 而不是通配符 (*)。这是一项安全措施:如果服务器说“任何来源都可以使用凭据(Cookie、身份验证令牌)访问此资源”,那么任何网站都可以代表用户进行身份验证的请求。浏览器强制执行此限制以防止凭据泄露。请改用“反映来源”模式 — 服务器读取请求的 Origin 标头,如果它在允许列表中,则将其回显。

什么是预检请求?

预检请求是浏览器在某些跨源请求之前自动发送的 OPTIONS 请求,以检查服务器是否允许这些请求。当满足以下条件时会触发预检:请求使用的不是 GET/HEAD/POST 方法、包含自定义标头(如 Authorization)或使用的 Content-Type 值不是表单数据或纯文本。服务器必须使用适当的 Access-Control-* 标头响应 OPTIONS 请求。如果预检失败,浏览器将阻止实际请求。Access-Control-Max-Age 标头控制浏览器缓存预检结果的时间。

我应该使用哪个服务器框架代码片段?

根据您的后端技术进行选择:Express.js 用于 Node.js API,Nginx 用于反向代理/静态文件服务器,Apache 用于传统托管 (.htaccess),Django 用于 Python Django 项目(使用 django-cors-headers 包),FastAPI 用于现代 Python API(内置 CORSMiddleware),Flask 用于 Python Flask 应用(使用 flask-cors),Go 用于 Go net/http 服务器。每个代码片段都是根据您的确切配置生成的 — 只需复制并粘贴到您的项目中。对于容器化部署,您可能需要在反向代理级别(Nginx/Apache)而不是应用程序级别配置 CORS。

想要享受无广告的体验吗? 立即无广告

安装我们的扩展

将 IO 工具添加到您最喜欢的浏览器,以便即时访问和更快地搜索

添加 Chrome 扩展程序 添加 边缘延伸 添加 Firefox 扩展 添加 Opera 扩展

记分板已到达!

记分板 是一种有趣的跟踪您游戏的方式,所有数据都存储在您的浏览器中。更多功能即将推出!

广告 移除?
广告 移除?
广告 移除?

新闻角 包含技术亮点

参与其中

帮助我们继续提供有价值的免费工具

给我买杯咖啡
广告 移除?