全部产品
Search
文档中心

边缘安全加速:条件判断相关

更新时间:Oct 25, 2024

本文为您介绍条件判断相关函数的语法、说明、参数、返回值和示例。

and

函数详细信息,请参见下表:

项目

描述

语法

and(arg, ...)

说明

  • 逻辑与运算符。

  • 支持短路语义,即某个参数为假时,后续参数不再进行求值。

参数

一个或多个参数,参数类型不限。

返回值

全部参数为真时返回true,任一参数为假时返回false

示例

if and($arg_mode, eq($arg_mode, 'set_header')) {
   add_rsp_header('USER-DEFINED-1','path1')
}
  • 当请求携带mode参数且mode参数等于set_header时,设置响应头USER-DEFINED-1。

  • 当请求不携带mode参数,短路语义生效,不再执行后续的eq比较;由于and()为假,不会设置响应头USER-DEFINED-1。

or

函数详细信息,请参见下表:

项目

描述

语法

or(arg, ...)

说明

  • 逻辑或运算符。

  • 支持短路语义,即某个参数为真时,后续参数不再进行求值。

参数

一个或多个参数,参数类型不限。

返回值

任一参数为真时返回true,全部参数为假时返回false

示例

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')
}
  • 当请求头from存在,且其值为[wap|comos]时,302重定向至http://example.com.cn/zt_d/we2015/[wap|comos]。

  • 当请求头from存在,且其值为wap时,短路语义生效,不再执行后续eq comos比较,同时or()返回true。

not

函数详细信息,请参见下表:

项目

描述

语法

not(arg)

说明

逻辑运算符取反。参数undeffalse为假,其余为真。

参数

仅接受1个参数,参数类型不限。

返回值

  • true

  • false

示例

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)
}
  • 如果请求未携带参数key时,403拒绝请求。

  • 当请求未携带cookie user时,403拒绝请求,响应body为'not cookie user'

  • not(0)的结果为false。

  • not(false)的结果为true。

eq

函数详细信息,请参见下表:

项目

描述

语法

eq(arg1, arg2)

说明

比较2个参数是否相等。

参数

  • arg1:任意类型。

  • arg2:应与arg1类型相同。

返回值

参数相等返回true,否则返回false

示例

key1 = 'value1'
if eq(key1, $arg_k1) {
    say('match condition')
}
  • eq: 请求参数k1的值是否等于value1。

  • 当请求参数k1等于value1,输出响应体match condition。

ne

函数详细信息,请参见下表:

项目

描述

语法

ne(arg1, arg2)

说明

比较2个参数是否不等。

参数

  • arg1:任意类型。

  • arg2:应与arg1类型相同。

返回值

参数不等返回true,否则返回false

示例

key2 = 'value2'
if ne(key2, $arg_k2) {
    say('match condition')
}
  • ne: 请求参数k2的值不等于value2。

  • 当请求参数k2不等于value2时,输出响应体match condition。

null

函数详细信息,请参见下表:

项目

描述

语法

null(v)

说明

判断ES数据类型是否为空。

参数

v:需要传入的参数,类型为数组、字典和字符串,其他类型均返回false。

返回值

返回值为bool类型

  • v是数组和字典,如果为空,返回true。

  • v是字符串,如果值为空串,返回true。

  • 其他情况均返回false。

示例

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

输出:

true
false
false
true