Les variables intégrées EdgeScript correspondent directement aux variables NGINX et offrent à vos scripts un accès en lecture seule aux propriétés de la requête : URI, paramètres de requête, en-têtes, cookies, adresse IP du client et détails du protocole.
Les variables intégrées sont en lecture seule. Ne leur attribuez pas de valeurs.
Le préfixe dollar ($) identifie une variable intégrée. Vous pouvez omettre le préfixe $ si votre logique métier l'exige.
Limite de variables
Un script prend en charge au maximum 200 variables. Si votre règle nécessite davantage de variables, divisez la logique en plusieurs fonctions définies par l'utilisateur, chacune contenant au plus 200 variables. Consultez la section Fractionnement de fonction pour un exemple.
Gestion des traits d'union dans les noms de variables
Trois variables intégrées — $arg_{name}, $http_{name} et $cookie_{name} — utilisent un espace réservé {name} pour une clé de chaîne de requête, un champ d'en-tête de requête ou un champ de cookie. Chacune gère les traits d'union différemment :
|
Variable |
Gestion des traits d'union |
|
|
Si |
|
|
Remplacez les traits d'union par des underscores. Exemple : |
|
|
Si |
Variables intégrées
|
Variable |
Valeur renvoyée |
Variable NGINX |
|
|
Valeur de la clé |
|
|
|
Valeur du champ |
|
|
|
Valeur du champ |
|
|
|
Type de protocole |
|
|
|
Version du protocole |
|
|
|
Hôte d'origine |
|
|
|
URI d'origine |
Aucune |
|
|
Tous les paramètres de la chaîne de requête, à l'exclusion du |
|
|
|
Méthode de requête |
|
|
|
URI de requête complet, équivalent à |
|
|
|
Adresse IP du client (c'est-à-dire la première adresse IP contenue dans l'en-tête de requête |
|
Exemple : $arg_{name} et $args
Pour la requête http://example.aliyundoc.com/1k.file?k1=v1&k2=v2 :
$arg_k1renvoiev1$argsrenvoiek1=v1&k2=v2(la chaîne de requête complète, sans le?)
Fractionnement de fonction
Si une règle contient plus de 200 variables, divisez la fonction d'origine en plusieurs fonctions définies par l'utilisateur. Chaque fonction définie par l'utilisateur doit contenir au plus 200 variables.
#If variables exceed the limit, split them like this:
def judeg_arg() {
#Parameter judgment related logic
x
x
}
def judeg_time() {
#Time judgment related logic
x
x
}
def judeg_token() {
#Encryption judgment related logic
x
x
}
judeg_arg()
judeg_time()
judeg_token()