コンテンツにスキップ

HTTPリクエストヘッダーフィールド

Rules言語には、HTTPリクエストヘッダーのプロパティを表すフィールドが含まれています。これらの多くは、対応する値を含む配列を返します。

Cloudflare Rules言語は、これらのHTTPヘッダーフィールドをサポートしています。

http.request.headers

http.request.headers Map<Array<String>>

HTTPリクエストヘッダーをMap(または連想配列)として表します。

連想配列のキーは、HTTPリクエストヘッダーの名前を小文字に変換したものです。

繰り返しヘッダーがある場合、配列にはリクエストに現れる順序で含まれます。

リクエストヘッダーの値は前処理されず、リクエストで使用された元のケースを保持します。

  • デコーディング: デコーディングは行われません
  • 空白: 保持されます
  • 非ASCII: 保持されます

例:

any(http.request.headers["content-type"][*] == "application/json")

例の値:

{"content-type": ["application/json"]}

http.request.headers.names

http.request.headers.names Array<String>

HTTPリクエスト内のヘッダーの名前を表します。

名前は前処理されず、リクエストで使用された元のケースを保持します。

ヘッダー名の順序は保証されていませんが、http.request.headers.valuesと一致します。

重複するヘッダーは複数回リストされます。

  • デコーディング: デコーディングは行われません
  • 空白: 保持されます
  • 非ASCII: 保持されます

例:

any(http.request.headers.names[*] == "content-type")

例の値: ["content-type"]

http.request.headers.values

http.request.headers.values Array<String>

HTTPリクエスト内のヘッダーの値を表します。

値は前処理されず、リクエストで使用された元のケースを保持します。

ヘッダー値の順序は保証されていませんが、http.request.headers.namesと一致します。

重複するヘッダーは複数回リストされます。

  • デコーディング: デコーディングは行われません
  • 空白: 保持されます
  • 非ASCII: 保持されます

例 1:

any(http.request.headers.values[*] == "application/json")

例の値 1:

["application/json"]

指定された演算子およびヘッダー値に入力された長さ/サイズに従ってリクエストを一致させるためにも使用されます。

例 2:

any(len(http.request.headers.values[*])[*] gt 10)

例の値 2:

["このヘッダーの値は10バイトより長い"]

http.request.headers.truncated

http.request.headers.truncated Boolean

HTTPリクエストにヘッダーが多すぎる場合はtrueを返し、それ以外の場合はfalseを返します。

trueの場合、http.request.headershttp.request.headers.names、およびhttp.request.headers.valuesには、HTTPリクエストで送信されたすべてのヘッダーが含まれていない可能性があります。

http.request.accepted_languages

http.request.accepted_languages Array<String>

Accept-Language HTTPリクエストヘッダーに提供された言語タグのリストを表し、重み(;q=<weight>、デフォルトの重みは1)で降順にソートされています。

HTTPヘッダーがリクエストに存在しない場合や空の場合、http.request.accepted_languages[0]は”missing value”を返し、concat()関数はこれを空の文字列として処理します。

HTTPヘッダーに言語タグ*が含まれている場合、それは配列に保存されません。

例 1:

ヘッダーAccept-Language: fr-CH, fr;q=0.8, en;q=0.9, de;q=0.7, *;q=0.5を持つリクエスト。この場合: http.request.accepted_languages[0] == "fr-CH" http.request.accepted_languages == ["fr-CH", "en", "fr", "de"]

例 2:

Accept-Language HTTPヘッダーがなく、URIがhttps://www.example.com/my-pathの場合。この場合: concat("/", http.request.accepted_languages[0], http.request.uri.path) == "//my-path"