HTTPリクエストヘッダーフィールド
Rules言語には、HTTPリクエストヘッダーのプロパティを表すフィールドが含まれています。これらの多くは、対応する値を含む配列を返します。
Cloudflare Rules言語は、これらのHTTPヘッダーフィールドをサポートしています。
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 Array<String>
HTTPリクエスト内のヘッダーの名前を表します。
名前は前処理されず、リクエストで使用された元のケースを保持します。
ヘッダー名の順序は保証されていませんが、http.request.headers.valuesと一致します。
重複するヘッダーは複数回リストされます。
- デコーディング: デコーディングは行われません
- 空白: 保持されます
- 非ASCII: 保持されます
例:
any(http.request.headers.names[*] == "content-type")例の値: ["content-type"]
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 Boolean
HTTPリクエストにヘッダーが多すぎる場合はtrueを返し、それ以外の場合はfalseを返します。
trueの場合、http.request.headers、http.request.headers.names、およびhttp.request.headers.valuesには、HTTPリクエストで送信されたすべてのヘッダーが含まれていない可能性があります。
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"。