news 2026/9/18 23:33:45

Cloudflare Workers 兼容性标志 strip_authorization_on_cross_origin_redirect:跨源重定向时的 Authorization 头处理

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Cloudflare Workers 兼容性标志 strip_authorization_on_cross_origin_redirect:跨源重定向时的 Authorization 头处理

Cloudflare Workers 兼容性标志 strip_authorization_on_cross_origin_redirect:跨源重定向时的 Authorization 头处理

【免费下载链接】cloudflare-docsCloudflare’s documentation项目地址: https://gitcode.com/GitHub_Trending/cl/cloudflare-docs

跨源重定向时是否自动携带Authorization头,是影响凭据安全与鉴权链路正确性的关键行为。Cloudflare Workers 通过strip_authorization_on_cross_origin_redirect兼容性标志,将这一行为对齐到 2022 年更新的 Fetch API 规范,并提供了retain_authorization_on_cross_origin_redirect反向标志以保留旧行为。读完本文,你将完整掌握该标志的触发场景、安全权衡,以及通过 Wrangler 配置、Cloudflare Dashboard 与 API 三种方式启用/禁用它的具体操作方法。

标志是什么

该标志定义于本仓库的兼容性标志清单中:strip-authorization-on-cross-origin-redirect.md。其元信息如下:

字段
标志名称(enable_flag)strip_authorization_on_cross_origin_redirect
反向标志(disable_flag)retain_authorization_on_cross_origin_redirect
默认启用日期(enable_date)2025-09-01

启用strip_authorization_on_cross_origin_redirect后,Workers 运行时在跟随一个跳转到不同源(origin)的重定向时,会自动从请求中移除Authorization头。这里的"不同源"指的是协议、主机名或端口任一不同的目标地址;而同源重定向不受影响,Authorization头会照常携带。

为什么需要这个标志:Fetch 规范的历史变迁

该行为并非 Cloudflare 的发明,而是当前 Fetch API 规范 的明确要求。规范要求浏览器与运行时在跨源重定向时剥离Authorization头,以防止凭据被意外发送到不属于用户原始信任域的服务器。

关键在于时间线:这一要求在 2022 年才被加入 Fetch 规范,而 Cloudflare Workers 在此前就已经实现了自己的 fetch 处理逻辑,并未包含该要求。因此:

  • 按旧行为运行的 Workers,跨源重定向时会继续携带Authorization头;
  • 若直接修改运行时行为,会让所有已部署、且可能依赖旧行为的 Worker 发生破坏性变化。

这正是兼容性标志机制的典型应用场景。根据本仓库的兼容性日期文档,Cloudflare 定期更新 Workers 运行时,但任何更新都不应导致已部署的 Worker 停止工作;对于可能存在向后不兼容的变更,通过compatibility_datecompatibility_flags让新 Worker 选择接入、旧 Worker 保持原状。strip_authorization_on_cross_origin_redirect正是这种"运行时缺陷修复 + 兼容性门控"模式的实例。

新行为与旧行为:安全性与适用场景的权衡

新行为:默认剥离,防止凭据泄漏

当标志启用(即对齐 Fetch 规范)后,跨源重定向请求将不再携带Authorization头。这消除了一个潜在的安全隐患:旧行为在重定向到不受信任的源时,可能导致凭据被意外泄漏。例如,你的 Worker 调用某个 API,该 API 返回 3xx 重定向到攻击者可控的主机,旧行为会带着Authorization头跟随跳转,从而把令牌交给恶意端点。

旧行为:并非天生不安全,某些场景下反而合理

原文档明确指出,旧行为并非天生不安全,在某些场景下甚至是期望的行为。典型例子:

某个需要鉴权的 API 希望重定向到新的主机名,同时让客户端继续携带它的凭据(credentials)完成后续请求。

在这种场景下,新行为会导致重定向后的请求不再自动携带凭据,从而破坏鉴权链路——客户端必须在收到重定向后手动重新附加Authorization头,或改用其他鉴权传递机制。

因此选择哪个行为,本质是安全默认值与兼容性/便捷性之间的权衡:

行为优点风险
剥离(新,Fetch 规范)跨源重定向不会意外泄漏凭据,符合 Web 平台标准依赖旧行为的重定向鉴权链路会失效
保留(旧)跨源重定向可自动延续凭据,鉴权体验顺畅重定向到不受信任源时存在凭据泄漏风险

如何配置该标志

兼容性标志有统一的配置入口。根据兼容性标志文档,共有三种方式。

方式一:通过 Wrangler 配置文件(推荐)

在 Worker 的 Wrangler 配置文件中声明compatibility_flags数组。以下示例显式开启strip_authorization_on_cross_origin_redirect

{ "compatibility_date": "2025-06-02", "compatibility_flags": [ "strip_authorization_on_cross_origin_redirect" ] }

如果想要保留旧行为(即使compatibility_date已经越过 2025-09-01),则使用反向标志:

{ "compatibility_date": "2025-10-01", "compatibility_flags": [ "retain_authorization_on_cross_origin_redirect" ] }

本仓库自身的 Worker 配置可作参照:wrangler.jsonc 中声明了"compatibility_date": "2025-06-02"并使用了"compatibility_flags": ["nodejs_compat"],展示了这一数组结构的实际写法。修改配置后,运行npx wrangler deploy使新配置生效。

需要说明的是:由于该标志的默认启用日期是2025-09-01,只要你的compatibility_date等于或晚于该日期,strip_authorization_on_cross_origin_redirect即默认开启,无需显式声明;显式声明反而可以让行为更可读。而compatibility_flags的作用有两个方向——既能提前开启尚未默认生效的变更,也能禁用过去已经变成默认行为的变更(这正是retain_authorization_on_cross_origin_redirect的用途)。

方式二:通过 Cloudflare Dashboard

登录 Cloudflare Dashboard,在对应 Worker 的Settings(设置)中找到 Workers 兼容性配置区域,即可修改compatibility_datecompatibility_flags。通过 Dashboard 创建的 Worker 会自动将兼容性日期设置为当前日期。

方式三:通过 Cloudflare API

通过 Workers Script API 或 Workers Versions API 上传 Worker 时,在请求体的metadata字段中携带compatibility_datecompatibility_flags

{ "metadata": { "compatibility_date": "2025-10-01", "compatibility_flags": [ "retain_authorization_on_cross_origin_redirect" ] } }

注意:通过 API 上传且未指定兼容性日期时,会回退到最早、即任何标志生效之前的兼容性日期(2021-11-02)。新建 Worker 时强烈建议在 API 上传中显式设置当前日期,以便尽早获得规范行为与安全修复。

源码层面的佐证与仓库上下文

本文所述机制在本仓库中有多处相互印证的依据:

  • 标志本体定义于 src/content/compatibility-flags/strip-authorization-on-cross-origin-redirect.md,其 frontmatter 记录了enable_flagdisable_flagenable_date等元信息,这是兼容性标志清单的标准格式(仓库中共有 125 个此类文件);
  • 兼容性机制的总体原理见 src/content/docs/workers/configuration/compatibility-dates.mdx:兼容性日期用于一次性接入截至该日期的全部标志,且旧日期会被永久支持;
  • 标志配置的三种入口见 src/content/docs/workers/configuration/compatibility-flags.mdx;
  • 仓库实际使用的配置样例见 wrangler.jsonc。

注意:兼容性标志目录下这些文件的 frontmatter 中设置了publishResources: falserender: neverlist: never,即它们作为结构化数据源被消费,而非独立渲染的页面——实际面向开发者的综合说明位于compatibility-datescompatibility-flags两个文档中。这也解释了为何在"标志清单"与"综合说明"两处都能看到该机制的内容。

升级到新行为前的检查清单

由于strip_authorization_on_cross_origin_redirect会在兼容性日期达到2025-09-01后默认生效,升级compatibility_date前请对照检查:

  1. 审查重定向链路:梳理 Worker 中所有fetch()调用,确认是否存在"API 重定向到新主机并要求延续凭据"的模式。若存在,需要改为手动处理:捕获重定向响应后,在后续请求中显式设置Authorization头;
  2. 确认目标源可信度:对每个跨源重定向目标,评估"自动携带凭据"是否必要。若目标不受信任或不可控,保留新行为(剥离)反而是更安全的选择;
  3. 选择保留旧行为:如果确实依赖旧行为且无法改造代码,在compatibility_flags中显式加入retain_authorization_on_cross_origin_redirect,并记录该例外,避免后续误删;
  4. 部署后验证:运行npx wrangler deploy后,对重定向场景做端到端测试,确认Authorization头的携带/剥离符合预期。

总结

strip_authorization_on_cross_origin_redirect是 Cloudflare Workers 对齐 Fetch 规范、消除跨源重定向凭据泄漏风险的关键兼容性标志。它默认在2025-09-01起生效,并可通过retain_authorization_on_cross_origin_redirect反向保留旧行为。理解"规范要求"与"历史实现"的差距,结合自身重定向鉴权链路的具体形态做出选择,是安全升级compatibility_date的前提。

【免费下载链接】cloudflare-docsCloudflare’s documentation项目地址: https://gitcode.com/GitHub_Trending/cl/cloudflare-docs

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/18 23:31:25

RevokeMsgPatcher 微信防撤回补丁完整安装指南

RevokeMsgPatcher 微信防撤回补丁完整安装指南 【免费下载链接】RevokeMsgPatcher :trollface: A hex editor for WeChat/QQ/TIM - PC版微信/QQ/TIM防撤回补丁(我已经看到了,撤回也没用了) 项目地址: https://gitcode.com/GitHub_Trending/…

作者头像 李华
网站建设 2026/9/18 23:31:23

智慧矿山解决方案PPT怎么写?从数据链路到架构设计全解析

简介:一份38页的基于工业互联网的智慧矿山解决方案PPT,面向矿业企业管理者、智慧矿山项目规划人员及信息化从业者,系统阐述矿山数字化转型的整体路径。内容围绕政策背景、行业痛点与智慧矿山建设目标展开,重点讲解云计算、物联网、…

作者头像 李华
网站建设 2026/9/18 23:30:43

用 kohya_ss 训练你的 AI 画师:零基础 LoRA 训练完整教程

用 kohya_ss 训练你的 AI 画师:零基础 LoRA 训练完整教程 【免费下载链接】kohya_ss 项目地址: https://gitcode.com/GitHub_Trending/ko/kohya_ss 你手里有 20 张喜欢的图,想让 AI 学会其中的"味道",再生成同风格的新图。…

作者头像 李华
网站建设 2026/9/18 23:30:20

IDEA+HBuilderX全栈开发:Spring Boot与uni-app打包

这套组合拳我打了不下几十个项目了——IntelliJ IDEA 负责后端(Java/Spring Boot 那一摊),HBuilderX 负责前端(uni-app 这一摊),两边各自启动、各自打包,最后在服务器或者手机上拼成一个完整产品…

作者头像 李华
网站建设 2026/9/18 23:29:41

Ubuntu 18.04 安装 Docker:官方 APT 源配置与排错实战

上周有个读者发来一段报错,说他在一台 Ubuntu 18.04 的机器上装 Docker,apt install docker.io装完之后docker info里一堆警告,跑docker run hello-world直接卡住不动。这类问题我这两年遇到过不下十次,几乎每一次的根因都不一样&…

作者头像 李华