Request ↗ インターフェースは HTTP リクエストを表し、Fetch API の一部です。
Request オブジェクトに最もよく出会うのは、受信リクエストのプロパティとしてです。
export default {
async fetch(request, env, ctx) {
return new Response('Hello World!');
},
};リクエストオブジェクトを変更したい場合は、自分で Request を構築することもあります。fetch() ハンドラー から受け取る受信 request パラメーターは不変だからです。
export default {
async fetch(request, env, ctx) {
const url = "https://example.com";
const modifiedRequest = new Request(url, request);
// ...
},
};fetch() ハンドラー は Request コンストラクターを呼び出します。以下で定義する RequestInit と RequestInitCfProperties は、fetch() ハンドラー に渡せる有効なパラメーターも表します。
let request = new Request(input, options)-
inputstring | Request- URL を含む文字列、または既存の
Requestオブジェクトです。
- URL を含む文字列、または既存の
-
optionsoptions 任意Requestに適用する設定を含む、任意の options オブジェクトです。
リクエストに適用したいプロパティを含むオブジェクトです。
-
cacheundefined | 'no-store' | 'no-cache'任意- 標準の HTTP
cacheヘッダーです。サポートされるのはcache: 'no-store'とcache: 'no-cache'だけです。 それ以外の cache ヘッダーは、メッセージUnsupported cache mode: <attempted-cache-mode>のTypeErrorになります。
- 標準の HTTP
-
cfRequestInitCfProperties 任意Requestに設定できる Cloudflare 固有のプロパティです。Cloudflare グローバルネットワークがリクエストをどう扱うかを制御します。
-
methodstring任意- HTTP リクエストメソッドです。デフォルトは
GETです。Workers ではCONNECT↗ を除くすべての HTTP リクエストメソッド ↗ をサポートします。
- HTTP リクエストメソッドです。デフォルトは
-
headersHeaders 任意Headersオブジェクト ↗ です。
-
bodystring | ReadableStream | FormData | URLSearchParams 任意- リクエストボディがある場合のボディです。
- GET または HEAD メソッドのリクエストにはボディを付けられません。
-
redirectstring任意- 使うリダイレクトモードです。
follow、error、manualのいずれかです。新しいRequestオブジェクトのデフォルトはfollowです。ただし、FetchEventの受信Requestプロパティのリダイレクトモードはmanualです。
- 使うリダイレクトモードです。
-
signalAbortSignal 任意- 指定すると、対応する
AbortControllerで abort をトリガーしてリクエストをキャンセルできます。
- 指定すると、対応する
Request オブジェクトに設定できる Cloudflare 固有のプロパティを含むオブジェクトです。例:
// Disable ScrapeShield for this request.
fetch(event.request, { cf: { scrapeShield: false } })cf オブジェクトの無効なキーや誤った名前のキーは、黙って無視されます。cf オブジェクトを正しく使うには、TypeScript を使い、wrangler types で型を生成することを検討してください。
-
appsboolean任意- このリクエストで Cloudflare Apps ↗ を有効にするかどうかです。デフォルトは
trueです。
- このリクエストで Cloudflare Apps ↗ を有効にするかどうかです。デフォルトは
-
cacheEverythingboolean任意- すべてのコンテンツを静的として扱い、Cloudflare のデフォルトキャッシュ対象を超える ファイル種別 もキャッシュします。オリジン Web サーバーのキャッシュヘッダーは尊重します。Page Rule の Cache Level(Cache Everything) を設定するのと同等です。デフォルトは
falseです。 このオプションはGETとHEADリクエストメソッドにだけ適用されます。
- すべてのコンテンツを静的として扱い、Cloudflare のデフォルトキャッシュ対象を超える ファイル種別 もキャッシュします。オリジン Web サーバーのキャッシュヘッダーは尊重します。Page Rule の Cache Level(Cache Everything) を設定するのと同等です。デフォルトは
-
cacheKeystring任意- リクエストのキャッシュキーは、キャッシュの目的で 2 つのリクエストが同じかどうかを決めます。あるリクエストが以前のリクエストと同じキャッシュキーを持つ場合、Cloudflare は両方に同じキャッシュ済みレスポンスを返せます。
-
cacheTagsArray<string> 任意- このオプションは、オリジンサーバーからのレスポンスに追加の Cache-Tag ヘッダーを付けます。オリジンサーバーを変更せず、Worker が付けたタグに基づいてキャッシュ済みコンテンツをパージできます。Purge by Tag 機能で行います。
-
cacheTtlnumber任意- レスポンスで見えたヘッダーに関係なく、このリクエストのレスポンスを Cloudflare にキャッシュさせます。2 つの Page Rule、Edge Cache TTL と Cache Level(Cache Everything) を設定するのと同等です。値は 0 または正の数である必要があります。
0はキャッシュアセットが直ちに期限切れになることを示します。このオプションはGETとHEADリクエストメソッドにだけ適用されます。
- レスポンスで見えたヘッダーに関係なく、このリクエストのレスポンスを Cloudflare にキャッシュさせます。2 つの Page Rule、Edge Cache TTL と Cache Level(Cache Everything) を設定するのと同等です。値は 0 または正の数である必要があります。
-
cacheTtlByStatus{ [key: string]: number }任意- レスポンスのステータスコードに基づいて TTL を選ぶ、
cacheTtlの別バージョンです。このリクエストへのレスポンスのステータスコードが一致する場合、Cloudflare は指示された時間キャッシュし、オリジンが送ったキャッシュ指示を上書きします。例:{ "200-299": 86400, "404": 1, "500-599": 0 }。値は 0 と負の整数を含む任意の整数です。0はキャッシュアセットが直ちに期限切れになることを示します。負の値は、Cloudflare に一切キャッシュしないよう指示します。このオプションはGETとHEADリクエストメソッドにだけ適用されます。
- レスポンスのステータスコードに基づいて TTL を選ぶ、
-
varyRequestInitCfPropertiesVary任意- 単一の
fetch()リクエストについて、Varyヘッダー付きのオリジンレスポンスを Cloudflare がどうキャッシュするかを制御します。cf.varyと Cache Rules Vary の両方がある場合、このサブリクエストではcf.varyが優先されます。
- 単一の
-
imageObject | null 任意- このリクエストで Image Resizing を有効にします。取りうる値は Workers 経由で画像を変換する のドキュメントを参照してください。
-
polishstring任意- Polish ↗ モードを設定します。取りうる値は
lossy、lossless、offです。
- Polish ↗ モードを設定します。取りうる値は
-
resolveOverridestring任意- DNS ルックアップを上書きして、リクエストを別のオリジンサーバーへ向けます。
resolveOverrideの値は、URL に指定したホスト名ではなく、オリジン IP アドレスの決定に使う代替ホスト名です。リクエストのHostヘッダーは、引き続き URL の内容と一致します。つまりresolveOverrideにより、URL /Hostヘッダーが指定するサーバーとは別のサーバーへリクエストを送れます。ただしresolveOverrideが効くのは、URL のホストとresolveOverrideで指定したホストの両方が自分のゾーン内にある場合だけです。どちらかが別ゾーン / ドメインのホストを指定すると、セキュリティ上の理由でこのオプションは無視されます。Hostヘッダーはゾーン内を指したまま、ゾーン外のホストへリクエストを向けたい場合は、まずゾーン内にゾーン外ホストを指す CNAME レコードを作り、resolveOverrideをその CNAME レコードに向けます。セキュリティ上の理由で、実際にそのホストへ送っていない限り、ゾーン外のホストを指定するHostヘッダーは設定できません。
- DNS ルックアップを上書きして、リクエストを別のオリジンサーバーへ向けます。
-
scrapeShieldboolean任意- このゾーンでほかに設定されている場合、このリクエストで ScrapeShield ↗ を有効にするかどうかです。デフォルトは
trueです。
- このゾーンでほかに設定されている場合、このリクエストで ScrapeShield ↗ を有効にするかどうかです。デフォルトは
-
webpboolean任意
cf.vary オブジェクトは、単一の fetch() リクエストについて、オリジンの Vary レスポンスヘッダーが指名するリクエストヘッダーを Cloudflare がどう扱うかを制御します。Cache Rules Vary と同じ default と headers の形を使い、Vary と同じアクションと正規化の挙動です。
cf.vary を省略すると、Cloudflare はゾーンのほかの Vary 挙動を使います。設定されていれば Cache Rules Vary も含みます。
この設定がキャッシュキーに影響するには、オリジンレスポンスに Vary ヘッダーが必要です。Vary: * を含むレスポンスは、常にキャッシュをバイパスします。
cf.vary オブジェクトは次のキーをサポートします。
| キー | 必須 | 説明 |
|---|---|---|
default |
はい | headers に含まれない、オリジン Vary レスポンス内の任意のヘッダー名に対する設定です。 |
headers |
いいえ | 小文字のリクエストヘッダー名から設定オブジェクトへのマップです。 |
vary オブジェクトがある場合、default は必須です。空の vary オブジェクトは無効です。無効な cf.vary 設定は、そのリクエストでは無視されます。
各ヘッダー設定オブジェクトと default オブジェクトには、normalize、passthrough、bypass のいずれかに設定した action キーが必要です。指針は Actions を参照してください。
特定のヘッダー名には、追加パラメーターを指定できます。
| ヘッダー | 追加キー | 説明 |
|---|---|---|
accept |
media_types |
Accept ヘッダーを正規化するときに残す MIME タイプです。最大 10 件、1 件あたり 255 文字です。 |
accept-language |
languages |
Accept-Language ヘッダーを正規化するときに残す言語です。最大 20 件、1 件あたり 64 文字です。 |
default オブジェクトと、accept / accept-language 以外の headers エントリがサポートするのは action だけです。
ほとんどのデプロイでは、default.action を bypass にし、想定するオリジン Vary ヘッダーの headers エントリを追加し、オリジンが生のヘッダー値を必要としない限り accept と accept-language には normalize を使います。
次の制限と検証ルールが適用されます。
headersのヘッダー名は小文字である必要があります。- ヘッダー名に使えるのは小文字、数字、アンダースコア、ハイフンです。
- ヘッダー名は 128 文字を超えられません。
cf-またはcf_で始まるヘッダー名は使えません。- 一部の hop-by-hop、cache-control、proxy-control ヘッダーは使えません。例:
connection、content-length、cache-control、host、range、origin、x-forwarded-for。 headersは最大 50 エントリです。accept.media_typesは最大 10 エントリです。accept-language.languagesは最大 20 エントリです。media_typesとlanguagesの値は、空でない印字可能な ASCII 文字列である必要があります。
次の request init 断片は Accept と Accept-Language を正規化し、オリジン Vary レスポンス内のほかのヘッダーではキャッシュをバイパスします。
{
"cf": {
"vary": {
"default": {
"action": "bypass"
},
"headers": {
"accept": {
"action": "normalize",
"media_types": ["text/html", "application/json"]
},
"accept-language": {
"action": "normalize",
"languages": ["en", "fr", "de"]
}
}
}
}
}受信 Request オブジェクト(fetch() ハンドラー から受け取るリクエスト)のプロパティはすべて読み取り専用です。受信リクエストのプロパティを変更するには、新しい Request オブジェクトを作り、変更するオプションを コンストラクター に渡します。
-
bodyReadableStream 読み取り専用- ボディ内容のストリームです。
-
bodyUsedBoolean 読み取り専用- ボディがすでにレスポンスで使われたかどうかを示します。
-
cfIncomingRequestCfProperties 読み取り専用- Cloudflare グローバルネットワークが提供する、受信リクエストに関するプロパティを含むオブジェクトです。
- このプロパティは読み取り専用です(既存の
Requestから作成した場合を除く)。値を変更するには、新しいRequestオブジェクトを作るときにinitオプション引数のcfキー へ新しい値を渡します。
-
headersHeaders 読み取り専用-
Headersオブジェクト ↗ です。 -
ブラウザーと比べて、Cloudflare Workers が送信を許可するヘッダーの制限はごく少ないです。たとえばブラウザーは
Cookieヘッダーの設定を許可しません。クッキーはブラウザー自身が扱うためです。一方 Workers はクッキーを特別扱いせず、Cookieヘッダーをほかのヘッダーと同じように扱います。
-
-
methodstring 読み取り専用- リクエストのメソッドです。例:
GET、POSTなど。
- リクエストのメソッドです。例:
-
redirectstring 読み取り専用- 使うリダイレクトモードです。
follow、error、manualのいずれかです。リダイレクトモードがfollowの場合、fetchメソッドは自動でリダイレクトに従います。manualの場合、3xxリダイレクトレスポンスはそのまま呼び出し元に返ります。新しいRequestオブジェクトのデフォルトはfollowです。ただし、FetchEventの受信Requestプロパティのリダイレクトモードはmanualです。
- 使うリダイレクトモードです。
-
signalAbortSignal 読み取り専用- このリクエストに対応する
AbortSignalです。enable_request_signal互換性フラグを使うと、シグナルにイベントリスナーを付けられます。Worker の呼び出しが終わる前に、クリーンアップやログ書き込みができます。 たとえば次の Worker を実行し、クライアントからリクエストを中止すると、ログが書き込まれます。index.jsjs export default { async fetch(request, env, ctx) { // This sets up an event listener that will be called if the client disconnects from your // worker. request.signal.addEventListener("abort", () => { console.log("The request was aborted!"); }); const { readable, writable } = new IdentityTransformStream(); sendPing(writable); return new Response(readable, { headers: { "Content-Type": "text/plain" }, }); }, }; async function sendPing(writable) { const writer = writable.getWriter(); const enc = new TextEncoder(); for (;;) { // Send 'ping' every second to keep the connection alive await writer.write(enc.encode("ping\r\n")); await scheduler.wait(1000); } }index.tsts export default { async fetch(request, env, ctx): Promise<Response> { // This sets up an event listener that will be called if the client disconnects from your // worker. request.signal.addEventListener('abort', () => { console.log('The request was aborted!'); }); const { readable, writable } = new IdentityTransformStream(); sendPing(writable); return new Response(readable, { headers: { 'Content-Type': 'text/plain' } }); }, } satisfies ExportedHandler<Env>; async function sendPing(writable: WritableStream): Promise<void> { const writer = writable.getWriter(); const enc = new TextEncoder(); for (;;) { // Send 'ping' every second to keep the connection alive await writer.write(enc.encode('ping\r\n')); await scheduler.wait(1000); } }
- このリクエストに対応する
-
urlstring 読み取り専用- リクエストの URL です。
標準の Request ↗ オブジェクトのプロパティに加え、受信 Request の request.cf オブジェクトには、Cloudflare グローバルネットワークが提供するリクエスト情報が入ります。
すべてのプランで次にアクセスできます。
-
asnNumber- 受信リクエストの ASN です。例:
395747。
- 受信リクエストの ASN です。例:
-
asOrganizationstring- 受信リクエストの ASN を所有する組織です。例:
Google Cloud。
- 受信リクエストの ASN を所有する組織です。例:
-
botManagementObject | null- Cloudflare Bot Management を使っている場合にだけ設定されます。次のプロパティを持つオブジェクトです。
score、verifiedBot、signedAgent、staticResource、ja3Hash、ja4、detectionIds。詳細は Bot Management Variables を参照してください。
- Cloudflare Bot Management を使っている場合にだけ設定されます。次のプロパティを持つオブジェクトです。
-
clientAcceptEncodingstring | null- Cloudflare が
Accept-Encodingヘッダーの値を置き換えた場合、元の値がclientAcceptEncodingプロパティに保存されます。例:"gzip, deflate, br"。
- Cloudflare が
-
clientQuicRttnumber | undefined- QUIC 接続における Cloudflare とクライアント間の平滑化ラウンドトリップ時間(RTT)です。単位はミリ秒です。クライアントが QUIC(HTTP/3)で接続した場合にだけ存在します。例:
42。
- QUIC 接続における Cloudflare とクライアント間の平滑化ラウンドトリップ時間(RTT)です。単位はミリ秒です。クライアントが QUIC(HTTP/3)で接続した場合にだけ存在します。例:
-
clientTcpRttnumber | undefined- TCP 接続におけるクライアントと Cloudflare 間の平滑化ラウンドトリップ時間(RTT)です。単位はミリ秒です。クライアントが TCP(HTTP/1 および HTTP/2)で接続した場合にだけ存在します。例:
22。
- TCP 接続におけるクライアントと Cloudflare 間の平滑化ラウンドトリップ時間(RTT)です。単位はミリ秒です。クライアントが TCP(HTTP/1 および HTTP/2)で接続した場合にだけ存在します。例:
-
colostring- リクエストが到達したデータセンターの 3 文字
IATA↗ 空港コードです。例:"DFW"。
- リクエストが到達したデータセンターの 3 文字
-
countrystring | null- 受信リクエストの国です。リクエスト内の 2 文字の国コードです。
CF-IPCountryヘッダーで提供される値と同じです。例:"US"。
- 受信リクエストの国です。リクエスト内の 2 文字の国コードです。
-
edgeL4Object | undefined- クライアントと Cloudflare 間の接続のレイヤー 4 トランスポート統計です。次のプロパティを含みます。
deliveryRatenumber — 接続の直近のデータ配信レート推定値です。単位はバイト毎秒です。例:123456。
- クライアントと Cloudflare 間の接続のレイヤー 4 トランスポート統計です。次のプロパティを含みます。
-
isEUCountrystring | null- 受信リクエストの国が EU 内の場合、
"1"を返します。それ以外では、このプロパティは省略されるかfalseです。
- 受信リクエストの国が EU 内の場合、
-
httpProtocolstring- HTTP プロトコルです。例:
"HTTP/2"。
- HTTP プロトコルです。例:
-
hostMetadataObject | undefined- カスタムホスト名メタデータを持つゾーンからの受信リクエストの場合にだけ埋まります。追加できる カスタムホスト名メタデータ と、
hostMetadataフィールドでの公開方法は、Cloudflare for Platforms のドキュメントを参照してください。
- カスタムホスト名メタデータを持つゾーンからの受信リクエストの場合にだけ埋まります。追加できる カスタムホスト名メタデータ と、
-
requestPrioritystring | null- リクエストオブジェクト内の、ブラウザーが要求した優先度情報です。例:
"weight=192;exclusive=0;group=3;group-weight=127"。
- リクエストオブジェクト内の、ブラウザーが要求した優先度情報です。例:
-
tlsCipherstring- Cloudflare への接続の暗号です。例:
"AEAD-AES128-GCM-SHA256"。
- Cloudflare への接続の暗号です。例:
-
tlsClientAuthObject | null- クライアント証明書に関する各種詳細です(mTLS 接続向け)。詳細は クライアント証明書の変数 を参照してください。
-
tlsClientCiphersSha1string- TLS ハンドシェイク中にクライアントが送った暗号スイートの SHA-1 ハッシュ(Base64 エンコード)です。ビッグエンディアン形式です。例:
"GXSPDLP4G3X+prK73a4wBuOaHRc="。
- TLS ハンドシェイク中にクライアントが送った暗号スイートの SHA-1 ハッシュ(Base64 エンコード)です。ビッグエンディアン形式です。例:
-
tlsClientExtensionsSha1string- ハンドシェイク中に送られた TLS クライアント拡張の SHA-1 ハッシュ(Base64 エンコード)です。ビッグエンディアン形式です。例:
"OWFiM2I5ZDc0YWI0YWYzZmFkMGU0ZjhlYjhiYmVkMjgxNTU5YTU2Mg=="。
- ハンドシェイク中に送られた TLS クライアント拡張の SHA-1 ハッシュ(Base64 エンコード)です。ビッグエンディアン形式です。例:
-
tlsClientExtensionsSha1Lestring- ハンドシェイク中に送られた TLS クライアント拡張の SHA-1 ハッシュ(Base64 エンコード)です。リトルエンディアン形式です。例:
"7zIpdDU5pvFPPBI2/PCzqbaXnRA="。
- ハンドシェイク中に送られた TLS クライアント拡張の SHA-1 ハッシュ(Base64 エンコード)です。リトルエンディアン形式です。例:
-
tlsClientHelloLengthstring- TLS ハンドシェイク ↗ で送られた client hello メッセージの長さです。例:
"508"。具体的には、client hello のバイト列の長さです。
- TLS ハンドシェイク ↗ で送られた client hello メッセージの長さです。例:
-
tlsClientRandomstring- TLS ハンドシェイク ↗ でクライアントが提供する 32 バイトの乱数値です。詳細は RFC 8446 ↗ を参照してください。
-
tlsVersionstring- Cloudflare への接続の TLS バージョンです。例:
TLSv1.3。
- Cloudflare への接続の TLS バージョンです。例:
-
citystring | null- 受信リクエストの都市です。例:
"Austin"。
- 受信リクエストの都市です。例:
-
continentstring | null- 受信リクエストの大陸です。例:
"NA"。
- 受信リクエストの大陸です。例:
-
latitudestring | null- 受信リクエストの緯度です。例:
"30.27130"。
- 受信リクエストの緯度です。例:
-
longitudestring | null- 受信リクエストの経度です。例:
"-97.74260"。
- 受信リクエストの経度です。例:
-
postalCodestring | null- 受信リクエストの郵便番号です。例:
"78701"。
- 受信リクエストの郵便番号です。例:
-
metroCodestring | null- 受信リクエストのメトロコード(DMA)です。例:
"635"。
- 受信リクエストのメトロコード(DMA)です。例:
-
regionstring | null- 判明している場合、受信リクエストの IP アドレスに紐づく第 1 レベルの地域の ISO 3166-2 ↗ 名です。例:
"Texas"。
- 判明している場合、受信リクエストの IP アドレスに紐づく第 1 レベルの地域の ISO 3166-2 ↗ 名です。例:
-
regionCodestring | null- 判明している場合、受信リクエストの IP アドレスに紐づく第 1 レベルの地域の ISO 3166-2 ↗ コードです。例:
"TX"。
- 判明している場合、受信リクエストの IP アドレスに紐づく第 1 レベルの地域の ISO 3166-2 ↗ コードです。例:
-
timezonestring- 受信リクエストのタイムゾーンです。例:
"America/Chicago"。
- 受信リクエストのタイムゾーンです。例:
これらのメソッドは、Request オブジェクトのインスタンス、またはそのプロトタイプからのみ使えます。
-
clone(): RequestRequestオブジェクトのコピーを作成します。
-
arrayBuffer(): Promise<ArrayBuffer>- リクエストボディの
ArrayBuffer↗ 表現で解決する Promise を返します。
- リクエストボディの
-
formData(): Promise<FormData>- リクエストボディの
FormData↗ 表現で解決する Promise を返します。
- リクエストボディの
-
json(): Promise<Object>- リクエストボディの JSON 表現で解決する Promise を返します。
-
text(): Promise<string>- リクエストボディの文字列(テキスト)表現で解決する Promise を返します。
受信 HTTP リクエストによって Worker が呼び出されるたびに、Worker の fetch() ハンドラー が呼ばれます。Request コンテキストは fetch() ハンドラーが呼ばれたときに始まり、非同期タスク(fetch() API によるサブリクエストなど)は Request コンテキスト内でのみ実行できます。
export default {
async fetch(request, env, ctx) {
// Request context starts here
return new Response('Hello World!');
},
};Response の Promise を fetch イベントの .respondWith() メソッドに渡すと、Response の Promise が解決するまでの非同期タスクのあいだ、リクエストコンテキストは有効です。たとえば、イベントを非同期ハンドラーに渡せます。
addEventListener("fetch", event => {
event.respondWith(eventHandler(event))
})
// No request context available here
async function eventHandler(event){
// Request context available here
return new Response("Hello, Workers!")
}スクリプト起動中に fetch() などの API を使ったり、Request コンテキストへアクセスしたりすると、例外がスローされます。
const promise = fetch("https://example.com/") // Error
async function eventHandler(event){..}このコード断片はスクリプト起動中にスローされ、"fetch" イベントリスナーは登録されません。
Content-Length ヘッダーは、Request のデータソースに基づいてランタイムが自動設定します。ユーザーコードが Headers に手動で設定した値は無視されます。特定の値の Content-Length ヘッダーを付けるには、Request の body を FixedLengthStream、または文字列や TypedArray のような固定長の値にする必要があります。
FixedLengthStream は、書き込めるバイト数が固定の identity TransformStream です。
const { writable, readable } = new FixedLengthStream(11);
const enc = new TextEncoder();
const writer = writable.getWriter();
writer.write(enc.encode("hello world"));
writer.end();
const req = new Request('https://example.org', { method: 'POST', body: readable });リクエストのボディにそれ以外の種類の ReadableStream を使うと、Chunked-Encoding が使われます。
Workers の Request インターフェース実装には、Web 標準の Request API へのいくつかの拡張があります。意図的な違いであり、Workers ランタイム固有の追加機能を提供します。
Workers は、受信リクエストに関する Cloudflare 固有のメタデータを含む cf プロパティを Request オブジェクトに追加します。このプロパティは Web 標準の一部ではなく、Workers ランタイムでのみ利用できます。詳細は IncomingRequestCfProperties を参照してください。
headers プロパティは、Set-Cookie ヘッダー向けの getAll() などの追加メソッドを含む、Workers 固有の Headers オブジェクトを返します。Workers の Headers 実装が Web 標準とどう違うかは、Headers のドキュメント を参照してください。
fetch() ハンドラー に渡される受信 Request オブジェクトは不変です。受信リクエストのプロパティを変更するには、新しい Request オブジェクトを作る必要があります。
- 例: リクエストプロパティを変更する
- 例:
cfオブジェクトへアクセスする - リファレンス:
Response - 最適化された体験のため、Worker コードは ES modules 構文 で書いてください。