tencent cloud

Tencent Cloud EdgeOne

Condition

Baixar
Modo Foco
Tamanho da Fonte
Última atualização: 2026-10-15 18:20:40
Traduzido por IA
本文書では、各機能モジュールにおける条件式でサポートされる構文内容と記述規範について説明します。異なる機能モジュールの条件式はすべて統一された構造形式を採用していますが、具体的にサポートされる対象フィールド、演算子、値タイプはモジュールによって異なる場合があります。

式の構造

条件式は3つの基本構成要素から構成されます:対象フィールド、演算子、値。その基本形式は下図の通りです:



対象フィールド:通常は${…}形式の組み込み変数です。例えば${http.request.uri.path}、${http.request.method}などがあり、リクエスト内の特定の情報を抽出するために使用されます。
演算子:例えばin、matches、existsなどがあり、対象フィールドと値の関係を判断するために使用されます。
値:文字列、数値、リスト、またはその他の変数を使用できます。演算子に応じて角括弧[ ]で囲む必要があります。例えば['POST']または[100, 200]です。

演算子

一致演算子

名前
キーワード
サポートされるデータ型
例
サポートされる機能モジュール
値が集合内にある
in
String、Number

説明:
Numberは整数型と浮動小数点型をサポートします。
コレクションは定数と変数をサポートします。
${http.request.file_extension} in ["jpg", "png"]
サイトアクセラレーション、エッジ関数、Webプロテクション
正規表現マッチング
matches
Stringのみをサポートします。

説明:
常値文字列で定義された正規表現のみをサポートします。
${http.request.uri.path} matches "^/admin/"
サイトアクセラレーション、エッジ関数、Webプロテクション
存在
exists
データ型は制限されません。

説明:
この演算子はフィールド(キー / 属性)が存在するかどうかを確認し、フィールド値は確認しません。
${http.request.uri.args["status"]} exists
サイトアクセラレーション、エッジ関数、Webプロテクション
ワイルドカードマッチング
like
Stringのみをサポートします。
${http.request.uri.path} like ["/staging/*", "/prod/*"]
Web防护
包含マッチング
contain
Stringのみをサポートします。
${http.request.uri.path} contain ["api", "login"]
Web防护
より大きい
>
Numberのみをサポートします。
length(${http.request.headers["user-agent"]}) > 30
Web防护
より小さい
<
Numberのみをサポートします。
length(${http.request.headers["user-agent"]}) < 10
Web防护

論理演算子

現在の機能モジュールはすべてこの演算子ルールをサポートしており、複数の条件は論理演算子で組み合わせることができます:
and:論理積です。すべてのサブ条件が真の場合に真を返します(例えばA and B)。
or:論理和です。いずれかのサブ条件が真の場合に真を返します(例えばA or B)。
not:論理否定です。ブール式を反転します(例えばnot A)。
演算子の優先順位は次の通りです:not > and > or。括弧( )を使用して演算順序を変更できます。例えば:
//「A条件を満たし、かつ(B条件を満たすか、またはC条件を満たさない)」ことを表します。
${A} and (${B} or not ${C})

式の記述に関する注意事項

変数形式:対象フィールド変数は必ず${}で囲む必要があります。内部ではドット形式およびインデックス形式のアクセスをサポートします。例えば${http.request.headers['User-Agent']}、${security.ip_group['123'@'zone-xyz']}などです。
値の型:文字列値は必ずシングルクォートで囲み、リスト内に配置する必要があります。例えばin ['value1','value2']です。数値は直接記述できます。例えば> 100です。空値は特殊キーワードnullを使用します(特殊変数を参照)。
リスト形式:値が1つしかない場合でも、リスト形式(角括弧で囲む)で記述する必要があります。例えばin ['POST']またはin [200]です。
引用符とエスケープ:リスト内の文字列にはシングルクォートを使用します。内部に特殊文字(例えば@、.など)が含まれている場合、追加のエスケープは不要です。
大文字と小文字:演算子は統一して小文字を使用します(例:and、or、not、in、like、contain)。フィールド名は大文字と小文字を区別します(例:User-Agentとuser-agentは異なります)。
注意:
条件マッチングはデフォルトで大文字と小文字を区別します。大文字と小文字を区別しない場合は、変換関数を使用してください:lower(${http.request.uri.args['Test']}) in ['a', 'b']。

その他の例

以下は、いくつかの典型的な条件式の使用説明と対応するコードです:
1. 特定のパスとリクエストメソッドをマッチングします。
リクエストパスが/api/v3/testまたは/api/v3/submitであり、かつHTTPリクエストメソッドがPOSTの場合にトリガーされます。
${http.request.uri.path} in ['/api/v3/test','/api/v3/submit'] and ${http.request.method} in ['POST']
2. クライアントIPまたはASNをマッチングします。
クライアントIPアドレスが1.1.1.1であるか、サブネット10.10.10.0/24に属するか、またはその自律システム番号(ASN)が132203であるリクエストをマッチングします。
${http.request.ip} in ['1.1.1.1','10.10.10.0/24'] or ${http.request.ip.asn} in ['132203']
3. 特定のリクエストヘッダー値をマッチングします。
Refererリクエストヘッダー値がone.example.comであるリクエストをマッチングします。
${http.request.headers['referer']} in ['one.example.com']
4. 長さをチェックします。
リクエスト本文の長さは30未満です。
length(${http.request.body}) < 30
5. ワイルドカードパスマッチング。
/a/wildcard/path/または/another/wildcard/path/で始まるリクエストパスをマッチングします。
${http.request.uri.path} like ['/a/wildcard/path/*','/another/wildcard/path/*']
6. 文字列包含チェック。
リクエストパスにサブストリングapiまたはtestが含まれるリクエストをマッチングします。
${http.request.uri.path} contain ['api','test']
7. 複合存在性と値チェック。
Acceptsリクエストヘッダーが存在せず、かつCustomHeaderリクエストヘッダー値が空文字列であるリクエストをマッチングします。
not ${http.request.headers['Accepts']} exists and ${http.request.headers['CustomHeader']} in ['']



Ajuda e Suporte

Esta página foi útil?

comentários