Todos os produtos
Search
Central de documentação

Edge Security Acceleration:Funções lógicas

Última atualização: Jun 29, 2026

O EdgeScript (ES) oferece seis funções lógicas para criar expressões condicionais em regras de CDN: and, or, not, eq, ne e null. Os três operadores booleanos (and, or, not) aceitam avaliação de curto-circuito. Nesse mecanismo, o motor interrompe a avaliação dos argumentos assim que determina o resultado.

Resumo das funções

Função

Assinatura

Curto-circuito

Retorno

and

and(arg, ...) : Boolean

Para no primeiro false

true se todos os argumentos forem verdadeiros

or

or(arg, ...) : Boolean

Para no primeiro true

true se qualquer argumento for verdadeiro

not

not(arg) : Boolean

Valor booleano invertido

eq

eq(arg1, arg2) : Boolean

true se os valores forem iguais

ne

ne(arg1, arg2) : Boolean

true se os valores forem diferentes

null

null(v) : Boolean

true se v for string, array ou dicionário vazio

and

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

Executa o operador lógico AND. Quando qualquer argumento resulta em false, a avaliação de curto-circuito interrompe o processo e ignora os argumentos restantes.

Parâmetros: Um ou mais valores de qualquer tipo.

Valor de retorno: true se todos os valores resultarem em true; false se qualquer valor resultar em false.

Exemplo: Defina um cabeçalho de resposta apenas quando um parâmetro de consulta específico estiver presente e corresponder a um determinado valor.

if and($arg_mode, eq($arg_mode, 'set_header')) {
   add_rsp_header('USER-DEFINED-1','path1')
}
  • Caso a solicitação inclua mode=set_header, a função and() avalia ambas as condições e retorna true. O sistema define o cabeçalho de resposta USER-DEFINED-1.

  • Se a solicitação não tiver o parâmetro mode, $arg_mode resulta em false. A avaliação de curto-circuito interrompe a execução, eq() nunca é chamado e o sistema não define o cabeçalho de resposta.

or

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

Executa o operador lógico OR. Assim que qualquer argumento resulta em true, a avaliação de curto-circuito para e ignora os argumentos restantes.

Parâmetros: Um ou mais valores de qualquer tipo.

Valor de retorno: true se algum valor resultar em true; false se todos os valores resultarem em false.

Exemplo: Redirecione solicitações com base no valor do cabeçalho 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')
}
  • Quando o cabeçalho From for wap ou comos, o sistema redireciona a solicitação (HTTP 302) para http://example.com.cn/zt_d/we2015/[wap|comos].

  • Se o cabeçalho From for wap, or() retorna true imediatamente e ignora a verificação de comos.

not

Assinatura: not(arg) : Boolean

Executa o operador lógico NOT. Os valores undef e false resultam em falso, enquanto outros valores resultam em verdadeiro.

Parâmetro: Exatamente um valor de qualquer tipo.

Valor de retorno: true ou false.

Exemplo: Bloqueie solicitações sem parâmetros obrigatórios ou cookies.

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) — caso a solicitação não tenha o parâmetro de consulta key, $arg_key será undef. A função not(undef) retorna true e a solicitação termina com HTTP 403.

  • not($cookie_user) — na ausência do cookie cookie_user na solicitação, $cookie_user assume o valor undef. Como not(undef) retorna true, a solicitação termina com HTTP 403 e o corpo not cookie user.

  • not(0) — retorna false. O bloco não executa.

  • not(false) — como false é um valor falso, not(false) retorna true. O bloco executa e encerra com HTTP 403.

eq

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

Compara dois valores para verificar igualdade.

Parâmetros:

  • arg1: Primeiro valor. Tipo de dados: qualquer.

  • arg2: Segundo valor. Tipo de dados: igual ao de arg1.

Valor de retorno: true se os dois valores forem iguais; false caso contrário.

Exemplo: O exemplo abaixo combina eq e ne dentro de uma chamada and(). Consulte a seção ne para a explicação completa.

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

ne

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

Verifica se dois valores são diferentes.

Parâmetros:

  • arg1: Primeiro valor. Tipo de dados: qualquer.

  • arg2: Segundo valor. Tipo de dados: igual ao de arg1.

Valor de retorno: true se os dois valores forem diferentes; false caso contrário.

Exemplo: Processe a solicitação apenas quando ambos os parâmetros de consulta estiverem presentes e atenderem a condições de valor específicas.

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

Para que o corpo execute, todas as quatro condições devem ser verdadeiras:

  1. A solicitação contém o parâmetro k1.

  2. A solicitação contém o parâmetro k2.

  3. O valor de k1 é igual a value1 (verificado por eq).

  4. O valor de k2 difere de value2 (verificado por ne).

Caso falte k1 ou k2 na solicitação, a avaliação de curto-circuito para na etapa 1 ou 2. Consequentemente, o sistema não chama eq() nem ne().

null

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

Verifica se um tipo de dados está especificado para o EdgeScript (ES).

Parâmetro: v — um array, dicionário ou string. Passar qualquer outro tipo de dados retorna false.

Valor de retorno: Booleano.

  • true — caso v seja uma string vazia, ou um array ou dicionário sem elementos.

  • false — quando v for uma string não vazia, um array ou dicionário não vazio, ou qualquer outro tipo de dados.

Exemplo:

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

Saída:

true
false
false
true
  • A chamada null(d) em um array vazio [] retorna true.

  • Após executar set(d, 1, 'v1'), o array deixa de estar vazio, então null(d) retorna false.

  • null('x') — string não vazia — retorna false.

  • null('') — string vazia — retorna true.