本教程介绍如何使用 Cloudflare Worker 向流量添加自定义 HTTP 标头,以及如何将这些自定义标头发送到受 Cloudflare Access 保护的源站服务。
某些应用程序和网络实现需要将特定的自定义标头传递给源站,这对于通过 Zero Trust 代理流动的流量来说可能很难实现。您可以配置 Worker 来发送 Access 所需的用户授权标头。
- 使用 Cloudflare Access 保护您的源站服务器
-
在 Cloudflare 仪表板 ↗中,转到 Workers & Pages 页面。
Go to Workers & Pages ↗ -
如果这是您的第一个 Worker,请选择 Create Worker(创建 Worker)。否则,选择 Create application(创建应用程序),然后选择 Create Worker(创建 Worker)。
-
为 Worker 输入一个可识别的名称,然后选择 Deploy(部署)。
-
选择 Edit code(编辑代码)。
-
输入以下 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);
},
};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>;- 选择 Save and deploy(保存并部署)。
您的 Worker 现在已准备好向受 Access 保护的源站服务发送自定义标头。
- 选择您创建的 Worker,然后转到 Triggers(触发器)。
- 在 Routes(路由) 中,选择 Add route(添加路由)。
- 输入源站的主机名和区域,然后选择 Add route(添加路由)。
Worker 现在将在匹配已定义路由的请求中插入自定义标头。例如:
"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": "[email protected]",
"Company-User-Id": "[email protected]",
"Connection": "keep-alive"