跳转到内容
搜索文档

使用 Workers 为受 Cloudflare Access 保护的源站创建自定义标头

最后更新 查看 MarkdownAgent 设置

本教程介绍如何使用 Cloudflare Worker 向流量添加自定义 HTTP 标头,以及如何将这些自定义标头发送到受 Cloudflare Access 保护的源站服务。

某些应用程序和网络实现需要将特定的自定义标头传递给源站,这对于通过 Zero Trust 代理流动的流量来说可能很难实现。您可以配置 Worker 来发送 Access 所需的用户授权标头


准备工作

  • 使用 Cloudflare Access 保护您的源站服务器

准备工作

  1. Cloudflare 仪表板中,转到 Workers & Pages 页面。

    Go to Workers & Pages ↗
  2. 如果这是您的第一个 Worker,请选择 Create Worker(创建 Worker)。否则,选择 Create application(创建应用程序),然后选择 Create Worker(创建 Worker)

  3. 为 Worker 输入一个可识别的名称,然后选择 Deploy(部署)

  4. 选择 Edit code(编辑代码)

  5. 输入以下 Worker:

export default {
	async fetch(request, env, ctx) {
		const { headers } = request;
		const cfaccessemail = headers.get("cf-access-authenticated-user-email");

		const requestWithID = new Request(request);
		requestWithID.headers.set("company-user-id", cfaccessemail);

		return fetch(requestWithID);
	},
};
Worker with custom HTTP headersts
export default {
	async fetch(request, env, ctx): Promise<Response> {
		const { headers } = request;
		const cfaccessemail = headers.get("cf-access-authenticated-user-email");

		const requestWithID = new Request(request);
		requestWithID.headers.set("company-user-id", cfaccessemail);

		return fetch(requestWithID);
	},
} satisfies ExportedHandler<Env>;
  1. 选择 Save and deploy(保存并部署)

您的 Worker 现在已准备好向受 Access 保护的源站服务发送自定义标头。

将 Worker 应用于您的主机名

  1. 选择您创建的 Worker,然后转到 Triggers(触发器)
  2. Routes(路由) 中,选择 Add route(添加路由)
  3. 输入源站的主机名和区域,然后选择 Add route(添加路由)

Worker 现在将在匹配已定义路由的请求中插入自定义标头。例如:

Example custom headerhttp
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
    "Accept-Encoding": "gzip",
    "Accept-Language": "en-US,en;q=0.9",
    "Cf-Access-Authenticated-User-Email": "user@example.com",
    "Company-User-Id": "user@example.com",
    "Connection": "keep-alive"

这篇文档对您有帮助吗?