Les variables intégrées d'EdgeScript correspondent directement aux variables NGINX et offrent à vos scripts un accès en lecture seule aux propriétés de la requête : l'URI, les paramètres de requête, les en-têtes, les cookies, l'adresse IP du client et les détails du protocole.
Les variables intégrées sont en lecture seule. Ne leur attribuez pas de valeurs.
Le signe dollar ($) en préfixe 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 complète, équivalente à |
|
|
|
Adresse IP du client utilisée pour se connecter aux points de présence (POP) |
|
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
Lorsqu'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 ne doit pas contenir plus de 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()