返回顶部
C

CORSCORS配置

Configure Cross-Origin Resource Sharing correctly to avoid security issues and debugging pain.

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 1.0.0
安全检测
已通过
803
下载量
免费
免费
2
收藏
概述
安装方式
版本历史

CORS

预检触发条件

  • - 除以下标头外的任何标头:Accept、Accept-Language、Content-Language、Content-Type(有限制)
  • Content-Type 非以下类型:application/x-www-form-urlencoded、multipart/form-data、text/plain
  • 方法:PUT、DELETE、PATCH 或任何自定义方法
  • 请求体中的 ReadableStream
  • XMLHttpRequest.upload 上的事件监听器
  • 任一触发条件 = 预检;简单请求完全跳过 OPTIONS

凭据模式

  • - Access-Control-Allow-Origin: * 与凭据不兼容——必须指定确切来源
  • 需要 Access-Control-Allow-Credentials: true 才能使用 Cookie/认证标头
  • Fetch:credentials: include;XHR:withCredentials = true
  • 无凭据模式时,跨域请求即使同源也不会发送 Cookie

通配符限制

  • - 不匹配子域名——.example.com 无效,不是模式匹配
  • 不能将 与凭据一起使用——需从请求中动态指定来源
  • Access-Control-Allow-Headers: 在大多数浏览器中有效,但并非全部——为兼容性请明确列出
  • Access-Control-Expose-Headers: * 同样问题——列出需要暴露的标头

来源验证

  • - 对照允许列表检查 Origin 标头——不要盲目反射(安全风险)
  • 正则匹配陷阱:example.com 会匹配 evilexample.com——请锚定模式
  • null 来源:沙箱化 iframe、file:// URL——通常拒绝,切勿视为可信来源
  • 缺少 Origin 标头:同源或非浏览器客户端——需显式处理

Vary 标头(关键)

  • - 当响应依赖来源时,始终包含 Vary: Origin——即使只允许一个来源
  • 缺少 Vary:CDN/代理为一个来源缓存响应,却提供给其他来源——破坏 CORS
  • 为预检缓存正确性,添加 Vary: Access-Control-Request-Headers, Access-Control-Request-Method

暴露的标头

  • - 默认情况下,JS 只能读取:Cache-Control、Content-Language、Content-Type、Expires、Last-Modified、Pragma
  • 自定义标头对 JS 不可见,除非在 Access-Control-Expose-Headers 中列出
  • X-Request-ID、X-RateLimit-* 等需要显式暴露——常见疏忽

预检缓存

  • - Access-Control-Max-Age: 86400 将预检缓存 24 小时——显著减少 OPTIONS 流量
  • Chrome 上限 2 小时;Firefox 上限 24 小时——超出值会被静默降低
  • 按来源 + URL + 请求特征缓存——非全局缓存
  • 开发期间设为 0 或省略——缓存会隐藏配置更改

调试

  • - 浏览器中的 CORS 错误 = 请求已到达服务器并返回——检查服务器日志
  • 预检失败:服务器必须在 OPTIONS 上返回 2xx 并携带 CORS 标头——404/500 = 失败
  • Fetch 中的不透明响应:mode: no-cors 成功但响应为空——通常不是你想要的结果
  • 网络标签页显示 CORS 错误;控制台显示缺少哪个标头

常见服务器错误

  • - 仅在主处理程序上设置 CORS 标头,未在 OPTIONS 上设置——预检失败
  • 在错误响应后设置标头——4xx/5xx 上缺少 CORS 标头会破坏错误处理
  • 代理剥离标头——验证标头是否到达客户端,而不仅仅是服务器设置了标头
  • Access-Control-Allow-Origin: *, https://example.com——必须是单个值,不能是列表

安全

  • - 不要盲目反射 Origin 标头——先对照允许列表验证
  • 私有网络访问:Chrome 要求 Access-Control-Allow-Private-Network: true 才能从公共网络访问 localhost
  • CORS 不阻止请求发送——仅阻止响应读取;服务器仍会处理请求
  • 敏感端点:不要仅依赖 CORS;使用认证 + CSRF 令牌

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 cors-1776327305 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 cors-1776327305 技能

通过命令行安装

skillhub install cors-1776327305

下载

⬇ 下载 CORS v1.0.0(免费)

文件大小: 2.34 KB | 发布时间: 2026-4-17 15:39

v1.0.0 最新 2026-4-17 15:39
Initial release

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large
返回顶部