Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

Workers で Cloudflare Access 保護オリジン向けのカスタムヘッダーを作成する

最終更新 Markdown で表示Agent セットアップ

このチュートリアルでは、Cloudflare Worker を使ってトラフィックにカスタム HTTP ヘッダーを追加し、Cloudflare Access で保護されたオリジンサービスへそのカスタムヘッダーを送る方法を説明します。

一部のアプリケーションやネットワーク実装では、オリジンへ特定のカスタムヘッダーを渡す必要があります。Zero Trust プロキシを経由するトラフィックでは、この実装が難しいことがあります。Access が必要とする ユーザー認可ヘッダー を送るように、Worker を設定できます。


始める前に

  • オリジンサーバーを Cloudflare Access で保護する

始める前に

  1. Cloudflare ダッシュボードWorkers & Pages ページを開きます。

    Workers & Pages を開く ↗
  2. 初めての Worker の場合は Create Worker を選びます。それ以外の場合は Create application を選び、続けて Create 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. RoutesAdd 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": "[email protected]",
    "Company-User-Id": "[email protected]",
    "Connection": "keep-alive"

役に立ちましたか?