日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

請求處理相關

本文為您介紹請求處理相關函數的語法、說明、參數、返回值和示例。

add_req_header

函數詳細信息,請參見下表:

項目

描述

語法

add_req_header(name, value [, append])

說明

添加請求頭,即回源請求頭。

參數

  • name:待添加的請求頭name,字符類型。

  • value:待添加的請求頭value,字符類型。

  • append:若請求頭已添加,append決定是否追加value,默認覆蓋(即默認不追加),布爾類型。

返回值

默認返回true,無效請求頭返回false

示例

add_req_header('USER-DEFINED-REQ-1', '1')
add_req_header('USER-DEFINED-REQ-1', 'x', true)

說明:添加2個請求頭,分別為
USER-DEFINED-REQ-1: 1
USER-DEFINED-REQ-1: x

del_req_header

函數詳細信息,請參見下表:

項目

描述

語法

del_req_header(name)

說明

刪除請求頭,即回源請求頭。

參數

name:待刪除的請求頭name,字符類型。

返回值

默認返回true,無效請求頭返回false

示例

add_req_header('USER-DEFINED-REQ-2', '2')
del_req_header('USER-DEFINED-REQ-2')

USER-DEFINED-REQ-2先添加、后刪除,故回源請求頭中無USER-DEFINED-REQ-2

add_rsp_header

函數詳細信息,請參見下表:

項目

描述

語法

add_rsp_header(name, value [, append])

說明

添加響應頭。

參數

  • name:待添加的響應頭name,字符類型。

  • value:待添加的響應頭value,字符類型。

    value可包含如下標記,用于在響應階段執行動態替換:

    • ${x} :將替換為ngx.var.x的值。

    • @{y}:將替換為響應頭y的值。

  • append:若響應頭已添加,append決定是否追加value,默認覆蓋,布爾類型。

返回值

默認返回true,無效響應頭返回false

示例

add_rsp_header('USER-DEFINED-RSP-1', '1')
add_rsp_header('USER-DEFINED-RSP-1', 'x', true)

說明:添加2個響應頭,分別為
USER-DEFINED-RSP-1:1
USER-DEFINED-RSP-1:x

del_rsp_header

函數詳細信息,請參見下表:

項目

描述

語法

del_rsp_header(name)

說明

刪除響應頭。

參數

name:待刪除的響應頭name,字符類型。

返回值

默認返回true,無效響應頭返回false

示例

add_rsp_header('USER-DEFINED-RSP-2', '2')
del_rsp_header('USER-DEFINED-RSP-2')

USER-DEFINED-RSP-2先添加、后刪除,故響應頭中無USER-DEFINED-RSP-2

encode_args

函數詳細信息,請參見下表:

項目

描述

語法

encode_args(d)

說明

將字典d中的k/v,轉換為URI編碼的k1=v1&k2=v2格式的字符串。

參數

d:字典類型。

返回值

返回URI編碼格式的字符串。

示例

my_args = []
set(my_args, 'key1', 'value1')
set(my_args, 'key2', 'value2')
my_args_str = encode_args(my_args)
say(concat('encode_args result: ', my_args_str))

輸出:

encode_args result: key1=value1&key2=value2

decode_args

函數詳細信息,請參見下表:

項目

描述

語法

decode_args(s)

說明

將URI編碼的k1=v1&k2=v2格式的字符串,轉換為字典類型。

參數

s:目標字符串。

返回值

返回轉換后的字典對象。

示例

my_args = decode_args('key1=value1&key2=value2')
def echo_each(k, v, u) {
    say(concat(k, '=', v))
}
foreach(my_args, echo_each, [])

輸出:

key1=value1
key2=value2

rewrite

函數詳細信息,請參見下表:

項目

描述

語法

rewrite(url, flag, code)

說明

改寫操作或重定向操作。

參數

  • url:目標URL,字符類型。

    • 當flag=redirect或flag=break時,僅改寫URI,則參數URL表示改寫后的目標URI。

    • 當flag=enhance_redirect或flag=enhance_break時,修改整個URI和參數,參數URL表示改寫后的目標URI和參數。

  • flag:重寫模式,字符類型。

    • redirect :僅修改URI,不修改參數;默認執行302跳轉至URL;如果指定參數code,則響應碼可自定義為:301、302(默認)、303、307或308。

    • break :僅修改URI,不修改參數,將URI修改為URL。

    • enhance_redirect:與redirect類似,但是修改整個URI和參數。

    • enhance_break:與break類似,但是修改整個URI和參數。

  • code:為響應碼,數字類型 。

    當flag=redirect或flag=enhance_redirect時,可自定義響應碼。

返回值

  • 對于改寫操作,默認返回true

  • 對于重定向操作,默認不返回。

示例

if and($arg_mode, eq($arg_mode, 'rewrite:enhance_break')) {
  rewrite('/a/example/examplefile.txt?k=v', 'enhance_break')
}
說明:回源和緩存的uri+參數,修改為/a/example/examplefile.txt?k=v

if and($arg_mode, eq($arg_mode, 'rewrite:enhance_redirect')) {
  rewrite('/a/example/examplefile.txt?k=v', 'enhance_redirect')
}
if and($arg_mode, eq($arg_mode, 'rewrite:enhance_redirect_301')) {
  rewrite('/a/example/examplefile.txt?k=v', 'enhance_redirect', 301)
}
說明:302或301跳轉至/a/example/examplefile.txt?k=v

if and($arg_mode, eq($arg_mode, 'rewrite:break')) {
  rewrite('/a/example/examplefile.txt', 'break')
}
說明:回源和緩存的uri,修改為/a/example/examplefile.txt,保持原參數不變

if and($arg_mode, eq($arg_mode, 'rewrite:redirect')) {
  rewrite('/a/example/examplefile.txt', 'redirect')
}
if and($arg_mode, eq($arg_mode, 'rewrite:redirect_301')) {
  rewrite('/a/example/examplefile.txt', 'redirect', 301)
}
說明:302或301跳轉至/a/example/examplefile.txt,保持原參數不變

say

函數詳細信息,請參見下表:

項目

描述

語法

say(arg)

說明

輸出響應體,并在行尾追加換行符。

參數

arg:任意類型。

返回值

無。

示例

say('hello')
say('hello')

輸出:
hello
hello

print

函數詳細信息,請參見下表:

項目

描述

語法

print(arg)

說明

輸出響應體與say()相同,但不會在行尾追加換行符。

參數

arg:任意類型。

返回值

無。

示例

print('byebye')
print('byebye')

輸出:
byebyebyebye

exit

函數詳細信息,請參見下表:

項目

描述

語法

exit(code [, body])

說明

以狀態碼code結束當前請求。若有body,則為響應體。

參數

  • code:響應狀態碼。

  • body:響應體。

返回值

無。

示例

  • 示例1

    if not($arg_key) {
        exit(403)
    }
    說明:如果請求未攜帶參數key時,403拒絕請求。
    
    if not($cookie_user) {
        exit(403, 'not cookie user')
    }
    說明:當請求未攜帶cookie user時,403拒絕請求,響應body為'not cookie user'
    
    if not(0) {
        exit(403)
    }
    說明:not(0)的結果為false
    
    if not(false) {
        exit(403)
    }
    說明:not(false)的結果為true
  • 示例2

    pcs = capture_re($request_uri,'^/([^/]+)/([^/]+)([^?]+)\?(.*)')
    sec1 = get(pcs, 1)
    sec2 = get(pcs, 2)
    sec3 = get(pcs, 3)
    if or(not(sec1), not(sec2), not(sec3)) {
       add_rsp_header('X-TENGINE-ERROR', 'auth failed - missing necessary uri set')
       exit(403)
    }
    digest = md5(concat(sec1, sec3))
    if ne(digest, sec2) {
        add_rsp_header('X-TENGINE-ERROR', 'auth failed - invalid digest')
        exit(403)
    }

get_rsp_header

函數詳細信息,請參見下表:

項目

描述

語法

get_rsp_header(str)

說明

獲取響應頭。

參數

str:string類型。

返回值

返回string、number、字典和boolean類型。

  • 頭存在:返回對應的值,可以為字典和字符串類型。

  • 頭不存在:返回false。

示例

ct = get_rsp_header('content-type')
if ct {
    add_rsp_header('origin-content-type', 'is')
} else {
      add_rsp_header('origin-content-type', 'no')
}

add_rsp_cookie

函數詳細信息,請參見下表:

項目

描述

語法

add_rsp_cookie(k, v [,properties])

說明

設置響應cookie,每次調用均會生成一個新的Set-Cookie響應頭。

參數

  • k:cookie名稱。

  • v:cookie值。

  • properties(可選參數):cookie屬性。詳細信息,請參見Set-Cookie

返回值

成功返回true,失敗返回false。

示例

add_rsp_cookie('user', 'edgescript')

add_rsp_cookie('login_time', tostring(now()), [
    'path' = '/'
])

expires = cookie_time(time())
add_rsp_cookie('psid', 'SDF93745HFSDF2934JKHG', [
    'path' = '/play',
    'domain' = 'foo.com',
    'secure' = true,
    'httponly' = true,
    'expires' = expires,
    'max_age' = 100,
    'samesite' = 'Strict',
    'extension' = 'xxt3s'
])

響應:

Set-Cookie: user=edgescript
Set-Cookie: login_time=1582538968.912; Path=/
Set-Cookie: psid=SDF93745HFSDF2934JKHG; Expires=Mon, 24-Feb-20 10:09:28 GMT; Max-Age=100; Domain=foo.com; Path=/play; Secure; HttpOnly; SameSite=Strict; xxt3s