Tous les produits
Search
Centre de documentation

CDN:Logical functions

Dernière mise à jour :Sep 17, 2026

EdgeScript (ES) propose 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 en court-circuit : le moteur cesse d'évaluer les 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 un argument au moins est vrai
not not(arg) : Boolean — Booléen inversé
eq eq(arg1, arg2) : Boolean — true si égaux
ne ne(arg1, arg2) : Boolean — true si différents
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. Lorsqu'un argument est évalué à false, l'évaluation en 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 sont évaluées à true ; false si une valeur au moins est évaluée à 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.

  • Si la requête ne contient aucun paramètre mode, $arg_mode est évalué à false. L'évaluation en court-circuit s'interrompt : 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. Lorsqu'un argument est évalué à true, l'évaluation en 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 une valeur au moins est évaluée à true ; false si toutes les valeurs sont évaluées à 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')
}
  • Si 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 : la vérification pour 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 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 requis.

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 aucun 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) : si la requête ne contient aucun cookie cookie_user, $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 pas.

  • not(false) : false étant falsy, not(false) renvoie true. Le bloc s'exécute et se termine avec le code HTTP 403.

eq

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

Compare l'égalité de deux valeurs.

Paramètres :

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

  • arg2 : deuxième 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 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

Compare la différence entre deux valeurs.

Paramètres :

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

  • arg2 : deuxième 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 : Faites correspondre une requête uniquement lorsque les 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')
}

Les quatre conditions doivent être vraies pour que le corps s'exécute :

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

  2. La requête inclut 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 pas k1 ou k2, l'évaluation en court-circuit s'interrompt à l'étape 1 ou 2, et ni eq() ni ne() ne sont appelées.

null

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

Vérifie si une valeur est vide pour EdgeScript (ES).

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

Valeur de retour : Booléen.

  • true : si v est une chaîne vide, ou un tableau ou un dictionnaire sans éléments.

  • false : si 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
  • null(d) sur un tableau vide [] renvoie true.

  • Après set(d, 1, 'v1'), le tableau n'est plus vide, donc null(d) renvoie false.

  • null('x') — chaîne non vide — renvoie false.

  • null('') — chaîne vide — renvoie true.