add_req_header|del_req_header|add_rsp_header|del_rsp_header|encode_args|decode_args|書き直し|言う|プリント|終了
add_req_header
項目 | 説明 |
構文 | add_req_header(name, value [, append])
|
機能 | オリジンサーバーにリダイレクトされる前に、リクエストにリクエストヘッダーを追加します。 |
パラメーター | name : 追加するリクエストヘッダーの名前。 データ型: 文字列。
value : 追加するリクエストヘッダーの値。 データ型: 文字列。
append : 同じ名前のリクエストヘッダーがすでに存在する場合、指定された値 を追加するかどうかを指定します。 有効な値は、true および false です。 デフォルト値:false データ型:Boolean このパラメーターをfalseに設定すると、指定された値は既存のリクエストヘッダーの値を上書きします。
|
戻り値 | デフォルトではtrue が返されます。 指定されたリクエストヘッダーが無効な場合、false が返されます。 |
例: | add_req_header('USER-DEFINED-REQ-1', '1')
add_req_header('USER-DEFINED-REQ-1', 'x', true)
add_req_header('USER-DEFINED-REQ-2', '2')
del_req_header('USER-DEFINED-REQ-2')
リクエストヘッダー: USER-DEFINED-REQ-1: 1
USER-DEFINED-REQ-1: x
説明 USER-DEFINED-REQ 2 のヘッダーが追加され、削除されます。 したがって、USER-DEFINED-REQ 2 のヘッダーはリクエストに含まれません。
|
del_req_header
項目 | 説明 |
構文 | del_req_header (名前)
|
機能 | オリジンサーバーにリダイレクトされる前に、リクエストからリクエストヘッダーを削除します。 |
パラメーター | name : 削除するリクエストヘッダーの名前。 データ型: 文字列。
|
戻り値 | デフォルトではtrue が返されます。 指定されたリクエストヘッダーが無効な場合、false が返されます。 |
例: | add_req_header('USER-DEFINED-REQ-1', '1')
add_req_header('USER-DEFINED-REQ-1', 'x', true)
add_req_header('USER-DEFINED-REQ-2', '2')
del_req_header('USER-DEFINED-REQ-2')
ヘッダー: USER-DEFINED-REQ-1: 1
USER-DEFINED-REQ-1: x
説明 USER-DEFINED-REQ-1: 1、USER-DEFINED-REQ-1: x、USER-DEFINED-REQ-2: 2のヘッダーが追加され、USER-DEFINED-REQ-2のヘッダーが削除されます。 したがって、USER-DEFINED-REQ 2のヘッダーはリクエストに含まれません。 |
add_rsp_header
項目 | 説明 |
構文 | add_rsp_header(name, value [, append])
|
機能 | レスポンスヘッダーを追加します。 |
パラメーター | name : 追加するレスポンスヘッダーの名前。 データ型: 文字列。
value : 追加するレスポンスヘッダーの値。 データ型: 文字列。
value パラメーターに次のいずれかの式を指定して、レスポンスフェーズで値を動的に置き換えることができます。
append : 同じ名前のレスポンスヘッダーがすでに存在する場合、指定された値 を追加するかどうかを指定します。 有効な値は、true および false です。 デフォルト値:false データ型:Boolean このパラメーターをfalseに設定すると、指定された値は既存のレスポンスヘッダーの値を上書きします。
|
戻り値 | デフォルトではtrue が返されます。 指定されたレスポンスヘッダーが無効な場合は、false が返されます。 |
例: | add_rsp_header('USER-DEFINED-RSP-1', '1')
add_rsp_header('USER-DEFINED-RSP-1', 'x', true)
add_rsp_header('USER-DEFINED-RSP-2', '2')
del_rsp_header('USER-DEFINED-RSP-2')
応答ヘッダー: USER-DEFINED-RSP-1: 1
USER-DEFINED-RSP-1: x
説明 USER-DEFINED-RSP 2 のヘッダーが追加され、削除されます。 したがって、USER-DEFINED-RSP 2 のヘッダは応答に含まれない。
|
del_rsp_header
項目 | 説明 |
構文 | del_rsp_header (名前)
|
機能 | レスポンスヘッダーを削除します。 |
パラメーター | name : 削除するレスポンスヘッダーの名前。 データ型: 文字列。
|
戻り値 | デフォルトではtrue が返されます。 指定されたレスポンスヘッダーが無効な場合は、false が返されます。 |
例: | add_rsp_header('USER-DEFINED-RSP-1', '1')
add_rsp_header('USER-DEFINED-RSP-1', 'x', true)
add_rsp_header('USER-DEFINED-RSP-2', '2')
del_rsp_header('USER-DEFINED-RSP-2')
応答ヘッダー: USER-DEFINED-RSP-1: 1
USER-DEFINED-RSP-1: x
説明 USER-DEFINED-REQ-1: 1、USER-DEFINED-REQ-1: x、USER-DEFINED-REQ-2: 2のヘッダーが追加され、USER-DEFINED-REQ-2のヘッダーが削除されます。 したがって、USER-DEFINED-REQ 2のヘッダは応答に含まれない。 |
encode_args
項目 | 説明 |
構文 | encode_args(d)
|
機能 | d で指定されたディクショナリのキーと値 のペアを、k1=v1&k2=v2 の形式でURIエンコードされた文字列に変換します。
|
パラメーター | d: 変換する辞書。 |
戻り値 | URIエンコードされた文字列。 |
例: | my_args = []
set(my_args, 'signature', 'da9dc4b7-87ae-4330-aaaf-e5454e2c2af1')
set(my_args, 'algo', 'private sign1')
my_args_str = encode_args(my_args)
add_rsp_header('X-AScript-ENCODE-ARGS', my_args_str)
to_args = decode_args(my_args_str)
if get(to_args, 'algo') {
add_rsp_header('X-AScript-DECODE-ARGS-ALGO', get(to_args, 'algo'))
}
if get(to_args, 'signature') {
add_rsp_header('X-AScript-DECODE-ARGS-SIGN', get(to_args, 'signature'))
}
応答ヘッダー: X-AScript-ENCODE-ARGS: signature=da9dc4b7-87ae-4330-aaaf-e5454e2c2af1&algo=private%20sign1
X-AScript-DECODE-ARGS-ALGO: private sign1
X-AScript-DECODE-ARGS-SIGN: da9dc4b7-87ae-4330-aaaf-e5454e2c2af1
|
decode_args
項目 | 説明 |
構文 | decode_args(s)
|
機能 | k1=v1&k2=v2 の形式のURIエンコードされた文字列を辞書型の文字列に変換します。
|
パラメーター | s: 変換する文字列。 |
戻り値 | 指定された文字列から変換された辞書オブジェクト。 |
例: | my_args = []
set(my_args, 'signature', 'da9dc4b7-87ae-4330-aaaf-e5454e2c2af1')
set(my_args, 'algo', 'private sign1')
my_args_str = encode_args(my_args)
add_rsp_header('X-AScript-ENCODE-ARGS', my_args_str)
to_args = decode_args(my_args_str)
if get(to_args, 'algo') {
add_rsp_header('X-AScript-DECODE-ARGS-ALGO', get(to_args, 'algo'))
}
if get(to_args, 'signature') {
add_rsp_header('X-AScript-DECODE-ARGS-SIGN', get(to_args, 'signature'))
}
応答ヘッダー: X-AScript-ENCODE-ARGS: signature=da9dc4b7-87ae-4330-aaaf-e5454e2c2af1&algo=private%20sign1
X-AScript-DECODE-ARGS-ALGO: private sign1
X-AScript-DECODE-ARGS-SIGN: da9dc4b7-87ae-4330-aaaf-e5454e2c2af1
|
rewrite
項目 | 説明 |
構文 | 書き換え (url, flag, code)
|
機能 | 書き換えまたはリダイレクトを実行します。 |
パラメーター | url: 書き換え操作後にソースURIが書き換えられるURL。 データ型: 文字列。 flag: 書き換えモード。 データ型: 文字列。 redirect: URIのみを書き換えます。 パラメータは書き換えられません。 デフォルトでは、302リダイレクトが実行されます。 このモードを指定した場合、code パラメーターは設定可能です。 codeパラメーターの有効な値は、301、302 (デフォルト) 、303、307、および308です。 break: URIのみをURLに書き換えます。 パラメータは書き換えられません。 enhance_redirect: redirect に似ています。 ただし、URIとパラメータの両方が書き換えられます。 enhance_break: break に似ています。 ただし、URIとパラメータの両方が書き換えられます。
code: HTTPステータスコード。 データ型: numeric。 このパラメーターは、flagパラメーターをredirectまたはenhance_redirectに設定した場合にのみ使用できます。
|
戻り値 | |
例: | if and($arg_mode, eq($arg_mode, 'rewrite:enhance_break')) {
rewrite('/a/b/c.txt?k=v', 'enhance_break')
}
#Note: The URI and parameters of requests redirected to the origin server are rewritten to /a/b/c.txt?k=v
if and($arg_mode, eq($arg_mode, 'rewrite:enhance_redirect')) {
rewrite('/a/b/c.txt?k=v', 'enhance_redirect')
}
if and($arg_mode, eq($arg_mode, 'rewrite:enhance_redirect_301')) {
rewrite('/a/b/c.txt?k=v', 'enhance_redirect', 301)
}
#Note: A 302 or 301 redirect to /a/b/c.txt?k=v is performed.
if and($arg_mode, eq($arg_mode, 'rewrite:break')) {
rewrite('/a/b/c.txt', 'break')
}
#Note: The URI of requests redirected to the origin server is rewritten to /a/b/c.txt and the original parameters in the requests remain unchanged.
if and($arg_mode, eq($arg_mode, 'rewrite:redirect')) {
rewrite('/a/b/c.txt', 'redirect')
}
if and($arg_mode, eq($arg_mode, 'rewrite:redirect_301')) {
rewrite('/a/b/c.txt', 'redirect', 301)
}
#Note: A 302 or 301 redirect to /a/b/c.txt is performed and the original parameters remain unchanged.
|
言う
項目 | 説明 |
構文 | say(arg)
|
機能 | レスポンス本文を出力し、出力の最後に改行文字を追加します。 |
パラメーター | arg: レスポンス本文の内容。 データ型: 任意の型。 |
戻り値 | 非該当 |
例: | say('hello')
print('byebye')
print('byebye')
出力: hello
byebyebyebye
|
print
項目 | 説明 |
構文 | プリント (arg)
|
機能 | レスポンス本文を印刷します。 この関数は、say() 関数とは異なります。 この関数は、出力の最後に改行を追加しません。 |
パラメーター | arg: レスポンス本文の内容。 データ型: 任意の型。 |
戻り値 | 非該当 |
例: | say('hello')
print('byebye')
print('byebye')
出力: hello
byebyebyebye
|
出口
項目 | 説明 |
構文 | exit(code [, body])
|
機能 | 指定されたHTTPステータスコード で現在のリクエストを終了します。 body パラメーターも設定すると、指定されたレスポンス本文を含むレスポンスが返されます。 |
パラメーター | code: 返されるHTTPステータスコード。 body: レスポンスボディ。
|
戻り値 | 非該当 |
例: | 例 1: if not($arg_key) {
exit(403)
}
#Note: If a request does not include the key parameter, the request is denied and the HTTP 403 status code is returned.
if not($cookie_user) {
exit(403, 'not cookie user')
}
#Note: If a request does not include cookie_user, the request is denied and a response that contains the body "not cookie user" is returned with the HTTP 403 status code.
if not(0) {
exit(403)
}
#Note: The not(0) function returns a value of false.
if not(false) {
exit(403)
}
#Note: The not(false) function returns a value of 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)
}
|