跨源请求发生在某个源(例如 a.example.com)上的网页请求来自不同源(例如 b.secondexample.com)的资源时。跨源资源共享(CORS)是一种使用 HTTP 标头让 b.secondexample.com 上的服务器指示是否允许 a.example.com 访问其资源的机制。浏览器会强制执行这些标头,并阻止访问未被允许的响应。
Cloudflare 通过以下方式支持 CORS:
- 根据
Host标头、Origin标头、URL 路径和查询字符串识别缓存资源。这允许不同资源使用相同的Host标头但不同的Origin标头。 - 将
Access-Control-Allow-Origin标头从源站服务器传递到浏览器。
Access-Control-Allow-Origin 标头允许服务器指定与外部源共享其资源的规则。服务器可以根据请求中的 Origin 标头返回不同的 Access-Control-Allow-Origin 值。这些标头通常出现在可缓存内容上。
如果您在源站 Web 服务器上添加或更改 CORS 配置,按 URL 清除 Cloudflare 缓存不会更新 CORS 标头。请通过以下选项之一强制 Cloudflare 获取新的 CORS 标头:
- 更改文件名或 URL 以绕过缓存,指示 Cloudflare 获取最新的 CORS 标头。
- 使用单文件清除 API 在清除请求中指定相应的 CORS 标头。
- 在源站 Web 服务器上更新资源的 last-modified 时间。然后,完成完全清除以获取包括更新后的 CORS 标头在内的最新版本资源。
您可以使用以下方法之一通过 Cloudflare 产品设置 CORS 标头:
- 使用 Worker:请参阅 CORS 标头代理 示例。
- 配置 Snippet:请参阅定义 CORS 标头 示例。
- 使用 Transform Rules:请参阅添加通配符 CORS 响应标头 示例。