server_addr
專案 | 描述 |
文法 | server_addr() |
說明 | 使用server_addr返回接收了當前請求的伺服器位址。 |
參數 | 無 |
樣本 | s_addr = server_addr()
say(concat('s_addr:', s_addr))
|
傳回值 | 返回伺服器位址,傳回值為字串類型。 |
server_port
專案 | 描述 |
文法 | server_port() |
說明 | 使用server_port返回接收了當前請求的伺服器連接埠。 |
參數 | 無 |
樣本 | s_port = server_port()
say(concat('s_addr:', s_port))
|
傳回值 | 返回伺服器連接埠,傳回值為數字類型。 |
client_addr
重要 風險提示:因電訊廠商網路NAT策略導致用戶端地址被修改,會影響該介面真實的傳回值,請謹慎使用。
專案 | 描述 |
文法 | client_addr() |
說明 | 使用client_addr返回用戶端IP地址。 |
參數 | 無 |
樣本 | c_addr = client_addr()
say(concat('c_addr:', c_addr))
|
傳回值 | 返回用戶端IP地址,傳回值為字串類型。 |
client_port
專案 | 描述 |
文法 | client_port() |
說明 | 使用client_port返回用戶端的連接埠。 |
參數 | 無 |
樣本 | c_port = client_port()
say(concat('c_port:', c_port))
|
傳回值 | 返回用戶端的連接埠,傳回值為數字類型。 |
req_uri
專案 | 描述 |
文法 | req_uri([pattern]) |
說明 | |
參數 | pattern:使用該參數進行匹配,支援以下兩種模式。 簡單匹配:相等判斷,預設為簡單匹配。 正則匹配:re: 前置的Regex。
|
樣本 | # req_uri
say(concat('req_uri: ', req_uri()))
if req_uri('/path1/path2') {
say('req_uri: plain match')
}
if req_uri('re:/path[0-9]/path[0-9]') {
say('req_uri: regex match')
}
|
傳回值 | 本樣本的傳回值如下: 請求:/path1/path2?mode=ip
響應:
req_uri: /path1/path2
req_uri: plain match
req_uri: regex match
|
req_uri_basename
專案 | 描述 |
文法 | req_uri_basename([pattern]) |
說明 | 檔案名稱部分樣本如下: 樣本1:對於/document_detail/30360.html,檔案名稱部分為30360。 樣本2:對於/M604/guopei_mp4/ZYJY2017BJGL0101/2-1_g.mp4,檔案名稱部分為2-1_g。 樣本3:對於/tarball/foo.tar.bz2,檔案名稱部分為foo。
|
參數 | pattern:使用該參數進行匹配,支援以下兩種模式。 簡單匹配:相等判斷,預設為簡單匹配。 正則匹配:re: 前置的Regex。
|
樣本 | # req_uri_basename
basename = req_uri_basename()
say(concat('req_uri_basename: ', basename, ' ', len(basename)))
if req_uri_basename('foo') {
say('req_uri_basename: plain match')
}
if req_uri_basename('re:^f.*') {
say('req_uri_basename: regex match')
}
|
傳回值 | 本樣本的傳回值如下: 請求:/path1/path2/foo.tar.bz2
響應:
req_uri_basename: foo 3
req_uri_basename: plain match
req_uri_basename: regex match
|
req_uri_ext
專案 | 描述 |
文法 | req_uri_ext([pattern]) |
說明 | 副檔名部分樣本如下: 樣本1:對於/document_detail/30360.html,副檔名部分為.html。 樣本2:對於/M604/guopei_mp4/ZYJY2017BJGL0101/2-1_g.mp4,副檔名部分為.mp4。 樣本3:對於/tarball/foo.tar.bz2,副檔名部分為.tar.bz2。
|
參數 | pattern:使用該參數進行匹配,支援以下兩種模式。 簡單匹配:相等判斷,預設為簡單匹配。 正則匹配:re: 前置的Regex。
|
樣本 | # req_uri_ext
ext = req_uri_ext()
say(concat('req_uri_ext: ', ext, ' ', len(ext)))
if req_uri_ext('.tar.bz2') {
say('req_uri_ext: plain match')
}
if req_uri_ext('re:\.tar\.bz[0-2]') {
say('req_uri_ext: regex match')
}
|
傳回值 | 本樣本的傳回值如下: 請求:/path1/path2/foo.tar.bz2
響應:
req_uri_ext: .tar.bz2 8
req_uri_ext: plain match
req_uri_ext: regex match
|
req_uri_seg
專案 | 描述 |
文法 | req_uri_seg([idx]) |
說明 | |
參數 | idx(選擇性參數):允許指定起始索引。 |
樣本 | # req_uri_seg
def echo_each(k, v, u) {
say(concat(get(u, 'msg'), ' : segs[', k, ']=', v))
}
# fetch all segments
segs = req_uri_seg()
foreach(segs, echo_each, ['msg'='req_uri_seg()'])
# fetch segments from idx 3
segs = req_uri_seg(3)
if get(segs, 3) {
say(concat('req_uri_seg(3): segs[3]=', get(segs, 3)))
}
if get(segs, 4) {
say(concat('req_uri_seg(3): segs[4]=', get(segs, 4)))
}
if get(segs, 5) {
say(concat('req_uri_seg(3): segs[5]=', get(segs, 5)))
}
|
傳回值 | 傳回值為字典類型,包含相應段落。
說明 從返回字典中擷取指定索引段落時,必須判斷是否為空白。 本樣本的傳回值如下: 請求:/path1/path2/path3/path4?mode=req2
響應:
req_uri_seg() : segs[1]=path1
req_uri_seg() : segs[2]=path2
req_uri_seg() : segs[3]=path3
req_uri_seg() : segs[4]=path4
req_uri_seg(3): segs[3]=path3
req_uri_seg(4): segs[4]=path4
|
req_uri_arg
專案 | 描述 |
文法 | req_uri_arg(name, [pattern]) |
說明 | 使用req_uri_arg預設返回指定參數的值,如果有pattern參數,則對指定參數的值進行匹配判斷。 |
參數 | |
樣本 | # req_uri_arg
uid = req_uri_arg('uid')
if uid {
say(concat('found uid ', uid))
} else {
say('not found uid')
}
uid_chk = req_uri_arg('uid', '058334')
if uid_chk {
say('check uid ok. plain mode')
} else {
say('check uid fail. plain mode')
}
uid_chk = req_uri_arg('uid', 're:[0-9]+')
if uid_chk {
say('check uid ok. regex mode')
} else {
say('check uid fail. regex mode')
}
|
傳回值 | 如果無pattern參數 參數存在:返回name指定參數的字串值。 參數不存在:返回false。
如果有pattern參數
本樣本的傳回值如下: 請求:/path1/path2/path3/path4?mode=req4&uid
響應:
not found uid
check uid fail. plain mode
check uid fail. regex mode
請求:/path1/path2/path3/path4?mode=req4&uid=
響應:
found uid
check uid fail. plain mode
check uid fail. regex mode
請求:/path1/path2/path3/path4?mode=req4&uid=12345
響應:
found uid 12345
check uid fail. plain mode
check uid ok. regex mode
|
req_uri_query_string
專案 | 描述 |
文法 | req_uri_query_string([pattern]) |
說明 | |
參數 | pattern:使用該參數進行匹配,支援以下兩種模式。 簡單匹配:相等判斷,預設為簡單匹配。 正則匹配:re: 前置的Regex。
|
樣本 | # req_uri_query_string
say(concat('req_uri_query_string: ', req_uri_query_string()))
if req_uri_query_string('mode=') {
say('check uri query string ok. plain mode')
} else {
say('check uri query string fail. plain mode')
}
if req_uri_query_string('re:mode=[0-9a-z]+') {
say('check uri query string ok. regex mode')
} else {
say('check uri query string fail. regex mode')
}
|
傳回值 | 本樣本的傳回值如下: 請求:/path1/path2/path3/path4?mode=req5&token=34Deasd#243
響應:
req_uri_query_string: mode=req5&token=34Deasd
check uri query string fail. plain mode
check uri query string ok. regex mode
|
req_scheme
專案 | 描述 |
文法 | req_scheme([pattern]) |
說明 | |
參數 | pattern:使用該參數進行匹配,支援以下兩種模式。 簡單匹配:相等判斷,預設為簡單匹配。 正則匹配:re: 前置的Regex。
|
樣本 | # req_scheme
say(concat('req_scheme: ', req_scheme()))
if req_scheme('https') {
say('check scheme ok. plain mode')
} else {
say('check scheme fail. plain mode')
}
if req_scheme('re:https?') {
say('check scheme ok. regex mode')
} else {
say('check scheme fail. regex mode')
}
|
傳回值 | 本樣本的傳回值如下: 請求:http://xx..
req_scheme: http
check scheme fail. plain mode
check scheme ok. regex mode
|
req_method
專案 | 描述 |
文法 | req_method([pattern]) |
說明 | |
參數 | pattern:使用該參數進行匹配,支援以下兩種模式。 簡單匹配:相等判斷,預設為簡單匹配。 正則匹配:re: 前置的Regex。
|
樣本 | # req_method
say(concat('req_method: ', req_method()))
if req_method('GET') {
say('check method ok. plain mode')
} else {
say('check method fail. plain mode')
}
if req_method('re:(GET|POST)') {
say('check method ok. regex mode')
} else {
say('check method fail. regex mode')
}
|
傳回值 | 本樣本的傳回值如下: 請求:POST /xxxx/xxx
響應:
req_method: POST
check method fail. plain mode
check method ok. regex mode
|
req_host
專案 | 描述 |
文法 | req_host([pattern]) |
說明 | |
參數 | pattern:使用該參數進行匹配,支援以下兩種模式。 簡單匹配:相等判斷,預設為簡單匹配。 正則匹配:re: 前置的Regex。
|
樣本 | # req_host
say(concat('req_host: ', req_host()))
if req_host('image.developer.aliyundoc.com') {
say('check host ok. plain mode')
} else {
say('check host fail. plain mode')
}
if req_host('re:.+\.y\.z\.com') {
say('check host ok. regex mode')
} else {
say('check host fail. regex mode')
}
|
傳回值 | 本樣本的傳回值如下: 請求:Host: image.developer.aliyundoc.com
響應:
req_host: image.developer.aliyundoc.com
check host ok. plain mode
check host fail. regex mode
|
req_user_agent
專案 | 描述 |
文法 | req_user_agent([pattern]) |
說明 | |
參數 | pattern:使用該參數進行匹配,支援以下兩種模式。 簡單匹配:相等判斷,預設為簡單匹配。 正則匹配:re: 前置的Regex。
|
樣本 | # req_user_agent
say(concat('req_user_agent: ', req_user_agent()))
if req_user_agent('Mozilla') {
say('check user_agent ok. plain mode')
} else {
say('check user_agent fail. plain mode')
}
if req_user_agent('re:^Mozilla') {
say('check user_agent ok. regex mode')
} else {
say('check user_agent fail. regex mode')
}
|
傳回值 | 本樣本的傳回值如下: 請求:User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
響應:
req_user_agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
check user_agent fail. plain mode
check user_agent ok. regex mode
|
req_referer
專案 | 描述 |
文法 | req_referer([pattern]) |
說明 | |
參數 | pattern:使用該參數進行匹配,支援以下兩種模式。 簡單匹配:相等判斷,預設為簡單匹配。 正則匹配:re: 前置的Regex。
|
樣本 | # req_referer
say(concat('req_referer: ', req_referer()))
if req_referer('https://example.aliyundoc.com/******00003') {
say('check referer ok. plain mode')
} else {
say('check referer fail. plain mode')
}
if req_referer('re:https://foo\.bar\.cn/\*+[0-9]+') {
say('check referer ok. regex mode')
} else {
say('check referer fail. regex mode')
}
|
傳回值 | 本樣本的傳回值如下: 請求:Referer: https://example.aliyundoc.com/******00003
響應:
req_referer: https://example.aliyundoc.com/******00003
check referer ok. plain mode
check referer fail. regex mode
|
req_cookie
專案 | 描述 |
文法 | req_cookie(name, [pattern]) |
說明 | 使用req_cookie預設返回指定cookie的值,如果有pattern參數,則對指定cookie的值進行匹配判斷。 |
參數 | |
樣本 | # req_cookie
uid = req_cookie('uid')
if uid {
say(concat('found cookie uid ', uid))
} else {
say('not found cookie uid')
}
uid_chk = req_cookie('uid', '058334')
if uid_chk {
say('check cookie uid ok. plain mode')
} else {
say('check cookie uid fail. plain mode')
}
uid_chk = req_cookie('uid', 're:^[0-9]+')
if uid_chk {
say('check cookie uid ok. regex mode')
} else {
say('check cookie uid fail. regex mode')
}
|
傳回值 | 如果無pattern參數 參數存在:返回name指定cookie的字串值。 參數不存在:返回false 。
如果有pattern參數
本樣本的傳回值如下: 請求:Cookie: uid=123456; token=value2
響應:
found cookie uid 123456
check cookie uid fail. plain mode
check cookie uid ok. regex mode
|
req_first_x_forwarded
專案 | 描述 |
文法 | req_first_x_forwarded([pattern]) |
說明 | |
參數 | pattern:使用該參數進行匹配,支援以下兩種模式。 簡單匹配:相等判斷,預設為簡單匹配。 正則匹配:re: 前置的Regex。
|
樣本 | # req_first_x_forwarded
say(concat('req_first_x_forwarded: ', req_first_x_forwarded()))
if req_first_x_forwarded('1.1.1.1') {
say('check first_x_forwarded ok. plain mode')
} else {
say('check first_x_forwarded fail. plain mode')
}
if req_first_x_forwarded('re:1.1.1.[0-9]') {
say('check first_x_forwarded ok. regex mode')
} else {
say('check first_x_forwarded fail. regex mode')
}
|
傳回值 | 本樣本的傳回值如下: 請求:X-Forwarded-For: 1.1.1.1, 10.10.10.10, 172.16.0.1
響應:
req_first_x_forwarded: 1.1.1.1
check first_x_forwarded ok. plain mode
check first_x_forwarded ok. regex mode
|
req_header
專案 | 描述 |
文法 | req_header(name, [pattern]) |
說明 | 使用req_header預設返回指定要求標頭的值,如果有pattern參數,則對指定要求標頭的值進行匹配判斷。 |
參數 | |
樣本 | # req_header
uid = req_header('x_uid')
if uid {
say(concat('found header x-uid ', uid))
} else {
say('not found header x-uid')
}
uid_chk = req_header('x_uid', 'es developer')
if uid_chk {
say('check header x-uid ok. plain mode')
} else {
say('check header x-uid fail. plain mode')
}
uid_chk = req_header('x_uid', 're:es [a-z]+')
if uid_chk {
say('check header x-uid ok. regex mode')
} else {
say('check header x-uid fail. regex mode')
}
|
傳回值 | 如果無pattern參數 參數存在:返回name指定要求標頭的字串值。 參數不存在:返回false。
如果有pattern參數
本樣本的傳回值如下: 請求:X-UID: es developer
響應:
found header x-uid es developer
check header x-uid ok. plain mode
check header x-uid ok. regex mode
|