Tous les produits
Search
Centre de documentation

Edge Security Acceleration:Fonctions logiques

Dernière mise à jour :Aug 12, 2026

EdgeScript (ES) fournit six fonctions logiques pour construire des expressions conditionnelles dans les règles CDN : and, or, not, eq, ne et null. Les trois opérateurs booléens (and, or, not) prennent en charge l'évaluation par court-circuit. Le moteur interrompt ainsi l'évaluation des arguments dès que le résultat est déterminé.

Résumé des fonctions

Fonction Signature Court-circuit Valeur de retour
and and(arg, ...) : Boolean S'arrête au premier false true si tous les arguments sont vrais
or or(arg, ...) : Boolean S'arrête au premier true true si au moins un argument est vrai
not not(arg) : Boolean Booléen inversé
eq eq(arg1, arg2) : Boolean true en cas d'égalité
ne ne(arg1, arg2) : Boolean true en cas d'inégalité
null null(v) : Boolean true si v est une chaîne vide, un tableau vide ou un dictionnaire vide

and

Signature : and(arg, ...) : Boolean

Exécute l'opérateur logique ET. Dès qu'un argument s'évalue à false, l'évaluation par court-circuit s'interrompt et les arguments restants sont ignorés.

Paramètres : une ou plusieurs valeurs de n'importe quel type.

Valeur de retour : true si toutes les valeurs s'évaluent à true ; false si l'une des valeurs s'évalue à false.

Exemple : définissez un en-tête de réponse uniquement lorsqu'un paramètre de requête spécifique est présent et correspond à une valeur donnée.

if and($arg_mode, eq($arg_mode, 'set_header')) {
   add_rsp_header('USER-DEFINED-1','path1')
}
  • Si la requête inclut mode=set_header, and() évalue les deux conditions et renvoie true. L'en-tête de réponse USER-DEFINED-1 est alors défini.

  • En l'absence du paramètre mode dans la requête, $arg_mode s'évalue à false. L'évaluation par court-circuit s'arrête immédiatement, eq() n'est jamais appelée et l'en-tête de réponse n'est pas défini.

or

Signature : or(arg, ...) : Boolean

Exécute l'opérateur logique OU. Dès qu'un argument s'évalue à true, l'évaluation par court-circuit s'interrompt et les arguments restants sont ignorés.

Paramètres : une ou plusieurs valeurs de n'importe quel type.

Valeur de retour : true si au moins une valeur s'évalue à true ; false si toutes les valeurs s'évaluent à false.

Exemple : redirigez les requêtes en fonction de la valeur de l'en-tête From.

if and($http_from, or(eq($http_from, 'wap'), eq($http_from, 'comos'))) {
    rewrite(concat('http://example.com.cn/zt_d/we2015/', $http_from), 'enhance_redirect')
}
  • Lorsque l'en-tête From vaut wap ou comos, la requête est redirigée (HTTP 302) vers http://example.com.cn/zt_d/we2015/[wap|comos].

  • Si l'en-tête From vaut wap, or() renvoie immédiatement true et la vérification de comos est ignorée.

not

Signature : not(arg) : Boolean

Exécute l'opérateur logique NON. Les valeurs undef et false sont évaluées comme fausses, tandis que toutes les autres valeurs sont évaluées comme vraies.

Paramètre : exactement une valeur de n'importe quel type.

Valeur de retour : true ou false.

Exemple : bloquez les requêtes auxquelles il manque des paramètres ou des cookies obligatoires.

if not($arg_key) {
    exit(403)
}
if not($cookie_user) {
    exit(403, 'not cookie user')
}
if not(0) {
    exit(403)
}
if not(false) {
    exit(403)
}
  • not($arg_key) : si la requête ne contient pas le paramètre de requête key, $arg_key vaut undef. not(undef) renvoie true et la requête se termine avec le code HTTP 403.

  • not($cookie_user) : en l'absence du cookie cookie_user dans la requête, $cookie_user vaut undef. not(undef) renvoie true et la requête se termine avec le code HTTP 403 ainsi que le corps not cookie user.

  • not(0) renvoie false. Le bloc ne s'exécute donc pas.

  • not(false) : false étant une valeur fausse, not(false) renvoie true. Le bloc s'exécute et la requête se termine avec le code HTTP 403.

eq

Signature : eq(arg1: any, arg2: same type as arg1) : Boolean

Vérifie si deux valeurs sont égales.

Paramètres :

  • arg1 : première valeur. Type de données : quelconque.

  • arg2 : seconde valeur. Type de données : identique à celui de arg1.

Valeur de retour : true si les deux valeurs sont égales ; false dans le cas contraire.

Exemple : l'exemple suivant combine eq et ne au sein d'un appel à and(). Consultez la section relative à ne pour obtenir l'explication complète.

key1 = 'value1'
key2 = 'value2'
if and($arg_k1, $arg_k2, eq(key1, $arg_k1), ne(key2, $arg_k2)) {
    say('match condition')
}

ne

Signature : ne(arg1: any, arg2: same type as arg1) : Boolean

Vérifie si deux valeurs sont différentes.

Paramètres :

  • arg1 : première valeur. Type de données : quelconque.

  • arg2 : seconde valeur. Type de données : identique à celui de arg1.

Valeur de retour : true si les deux valeurs sont différentes ; false dans le cas contraire.

Exemple : traitez une requête uniquement lorsque deux paramètres de requête sont présents et satisfont des conditions de valeur spécifiques.

key1 = 'value1'
key2 = 'value2'
if and($arg_k1, $arg_k2, eq(key1, $arg_k1), ne(key2, $arg_k2)) {
    say('match condition')
}

Le corps du bloc s'exécute seulement si les quatre conditions suivantes sont remplies :

  1. La requête contient le paramètre k1.

  2. La requête contient le paramètre k2.

  3. La valeur de k1 est égale à value1 (vérifié par eq).

  4. La valeur de k2 est différente de value2 (vérifié par ne).

Si la requête ne contient ni k1 ni k2, l'évaluation par court-circuit s'arrête à l'étape 1 ou 2. Par conséquent, ni eq() ni ne() ne sont appelées.

null

Signature : null(v: array | dictionary | string) : Boolean

Vérifie si un type de données est spécifié pour EdgeScript (ES).

Paramètre : v — un tableau, un dictionnaire ou une chaîne. Tout autre type de données renvoie false.

Valeur de retour : booléen.

  • true — lorsque v est une chaîne vide, ou bien un tableau ou un dictionnaire sans éléments.

  • false — lorsque v est une chaîne non vide, un tableau ou un dictionnaire non vide, ou tout autre type de données.

Exemple :

d = []
say(null(d))
set(d, 1, 'v1')
say(null(d))
say(tostring(null('x')))
say(tostring(null('')))

Sortie :

true
false
false
true
  • Appelée sur un tableau vide [], null(d) renvoie true.

  • Après l'exécution de set(d, 1, 'v1'), le tableau n'est plus vide et null(d) renvoie donc false.

  • null('x') porte sur une chaîne non vide et renvoie false.

  • null('') porte sur une chaîne vide et renvoie true.