DataScript を使用して、クライアント HTTP 要求またはサーバ HTTP 応答を検査し、コンテンツ スイッチング、リダイレクト、ヘッダー操作、ログ作成などを実行できます。次の表に、NSX Advanced Load Balancer で使用可能な HTTP DataScript を示します。
文字列 |
説明 |
---|---|
新しい Cookie を挿入します。 |
|
新しいヘッダーと値を挿入します。 |
|
TCP 接続を終了するか、リセットします。 |
|
Cookie がすでに存在するかどうかを検証します。 |
|
現在の接続の HTTP 処理をアップグレード(無効化)します。その後、レイヤー 4 TCP として扱われます。 |
|
Cookie の値を返します。 |
|
Cookie の名前を返します。 |
|
ヘッダー名またはその値を返します。 |
|
ホストのサブセクションを返します。 |
|
URI のパス /path.index.htm を返します。 |
|
パスのサブセクションを返します。 |
|
avi.http.get_query( [arg_name | avi.QUERY_TABLE] [, decode] ) |
URI のクエリ |
クライアント要求本文の一部または全体を返します。 |
|
要求 ID を返します。 |
|
|
|
バッファされた応答本文から、指定したキロバイト オフセットから開始して、指定された数のキロバイトを取得(読み取り)します。 |
|
URI(パスとクエリ)を返します。 |
|
セッションのユーザー ID を返します。 |
|
クライアントによって要求されたホスト名を返します。 |
|
HTTP 状態を文字列として返します。 |
|
クライアントの要求メソッドを返します。 |
|
セッション プロトコル(http または https)を返します。 |
|
ユーザーの OAuth セッションから TOKEN_TYPE のトークンを抽出します。 |
|
要求をリダイレクトします。 |
|
既存の Cookie を削除します。 |
|
ヘッダーのすべてのインスタンスを削除します。 |
|
既存の Cookie の値を置き換えます。 |
|
既存のヘッダーの値を置き換えます。 |
|
定義済みの HTTP 応答ページを送信します。 |
|
復号された SAML セッションの Cookie が存在する場合は、その文字列を返します。それ以外の場合は nil。 |
|
|
|
|
|
要求のパスを変更します。 |
|
要求のクエリを変更します。 |
|
HTTP 要求イベントから任意のデータを変数に設定(書き込み)します。これらの変数には、 |
|
バッファする最大応答本文を設定します。 |
|
特定の要求のカスタム タイムアウト値を設定します。 |
|
URI を変更します。 |
|
セッションのユーザー ID を設定します。 |
|
クライアントに送信される状態コードを返します。 |
|
HTTP 応答の既存の Cookie 属性値を変更します。 |
|
クライアント認証を無効にします。 |
avi.http.add_cookie
機能 |
avi.http.add_cookie( table ) |
説明 |
HTTP 要求または応答に 1 つまたは複数の新しい Cookie を挿入します。Cookie がすでに存在する場合、VMware NSX Advanced Load Balancer は指定された値またはフラグを既存の Cookie に追加します。 |
イベント |
|
|
|
パラメータ |
Cookie の名前と値のペア(HTTP 要求コンテキスト用)と、必要に応じてパス、ドメインなどの追加の Cookie 属性値ペアのテーブル(HTTP 応答用)。 |
要求パラメータ |
HTTP 要求イベント:Cookie の名前と値のペアが HTTP 要求の Cookie ヘッダーに追加され、そのようなヘッダーが存在しない場合は Cookie ヘッダーが追加されます。
name は新しい Cookie の名前です。 value は新しい Cookie の値またはデータ フィールドです。 HTTP 要求コンテキストで、すべての引数は Cookie の名前と値のペアとして扱われます。つまり、関数は「ドメイン」、「パス」などの Cookie 属性を無視し、それらを、追加する別の Cookie として扱います。 |
応答パラメータ |
HTTP 応答イベント:HTTP 応答コンテキストで呼び出されると、HTTP 応答の Set-Cookie ヘッダーに Cookie の名前と値のペアが追加されます。そのようなヘッダーが存在しない場合は、Set-Cookie ヘッダーが作成されます。 HTTP 応答コンテキストでは、最初の 2 つの引数のみが Cookie の名前と値のペアとして扱われ、後続の引数は Domain、Path などの Cookie 属性とそれに対応する値として解釈されます。
name は新しい Cookie の名前です。 value は新しい Cookie の値またはデータ フィールドです。 path は、path 属性の値(文字列)です。 domain は、domain 属性の値(文字列)です。 expires は、expires 属性の値(整数)です。 maxage は、maxage 属性の値(整数)です。 httponly は、httponly 属性の値(ブール値)です。 secure は、secure 属性の値(ブール値)です。 |
戻り値 |
なし。 |
HTTP 要求の例 |
メソッドの例 1:2 つの Cookie を追加:jsessionid=123 と lang=en cookie_table = {jsessionid="123", lang="en"}avi.http.add_cookie( cookie_table ) メソッドの例 2:2 つの Cookie を追加:jsessionid=123 と lang=en avi.http.add_cookie( "jsessionid", "123", "lang", "en" ) |
HTTP 応答の例 |
例 1:値 123 の Cookie jsessionid と path=/ および domain=www.avinetworks.com の属性を追加して、HTTP 応答に次のヘッダーを生成します。 Set-Cookie: jsessionid=123; path=/;domain=www.avinetworks.com cookie_table = {jsessionid="123", path="/", domain="www.avinetworks.com"} avi.http.add_cookie( cookie_table ) 例 2:この形式では、順序が重要です。3 番目、4 番目、5 番目、6 番目、7 番目、8 番目の引数は、それぞれ、path、domain、expires、maxage、httponly flag、および secure flag である必要があります。 avi.http.add_cookie( "jsessionid", "123", "/", "www.avinetworks.com" ) expires 属性と maxage 属性が不要な場合、値 0 が引数として渡されます。 avi.http.add_cookie( "jsessionid", "123", "/", "a.b.c", 0, 0, true, true) |
avi.http.add_header
機能 |
avi.http.add_header( name, value ) |
説明 |
指定された名前と値を持つヘッダーをクライアント HTTP 要求ヘッダーまたはサーバ HTTP 応答ヘッダーに追加します。 同じ名前のヘッダーがすでに存在する場合は、既存のヘッダーのリストの最後に、その名前の新しいヘッダーが追加されます。 |
イベント |
HTTP_REQ HTTP_RESP LB_DONE |
パラメータ |
name は、新しいヘッダーの名前を指定する文字列です。 |
value は、新しいヘッダーの値を指定する文字列です。 |
|
戻り値 |
戻り値はありません。 |
例 |
ユーザー エージェントに Mozilla が含まれている場合に、X-Foo という名前のヘッダーを値 Bar で HTTP 要求に追加します。 ua = avi.http.get_header("user-agent") i,j = string.find(ua, "Mozilla") if i then avi.http.add_header("X-Foo", "Bar") end |
avi.http.close_conn
機能 |
avi.http.close_conn( [reset] ) |
説明 |
現在の TCP 接続を終了します。 |
イベント |
HTTP_REQ HTTP_RESP |
パラメータ |
|
戻り値 |
戻り値はありません。 |
例 |
if avi.vs.client_ip() == "10.1.1.1" then avi.http.close_conn() end |
avi.http.cookie_exists
機能 |
avi.http.cookie_exists( name, [context] ) |
説明 |
HTTP 要求または応答に Cookie 名が存在する場合に |
イベント |
HTTP_REQ HTTP_REQ_BODY HTTP_RESP |
パラメータ |
name:Cookie 名を指定する文字列です。 context:現在のイベント コンテキストから Cookie を検査するのではなく、 たとえば、HTTP 応答イベント中に、クライアントによって要求イベント中に送信された Cookie を確認します。
注:
|
戻り値 |
Cookie 名が存在する場合はブール値 |
例 |
ServerIP Cookie が存在する場合は、Cookie 内で定義されたサーバ IP アドレスに要求を送信します。 if avi.http.cookie_exists("ServerIP") then avi.pool.select("Pool1", avi.http.get_cookie("ServerIP")) end |
avi.http.disable()
機能 |
avi.http.disable() |
説明 |
WebSocket などのプロトコルは、HTTP 内に組み込むことができます。最初の接続とハンドシェイクは HTTP として開始され、HTTP 以外の HTML 以外のプロトコルに切り替わります。一部の Microsoft アプリケーション、Java、およびバイナリ プロトコルは、この方法を使用して HTTP をトンネリングします。
Websocket のサポートは、HTTP プロファイルを使用してネイティブに有効にできます。一部のアプリケーション プロトコルでは、使用するヘッダーの名前が若干異なります。このときに、DataScript が必要になります。
|
イベント |
|
パラメータ |
なし |
戻り値 |
なし |
例 |
HTTP 要求イベント if string.lower(avi.http.get_header("Upgrade")) == "websocket" and string.lower(avi.http.get_header("Connection") == "upgrade" then avi.http.set_reqvar("var", 1) end HTTP 応答イベント if avi.http.get_reqvar("var") == 1 then avi.http.disable() end |
avi.http.get_cookie( name [, context] )
機能 |
avi.http.get_cookie( name [, context] ) |
説明 |
クライアント要求またはサーバ応答ヘッダーから特定の Cookie の値を返します。 |
イベント |
HTTP_REQ HTTP_REQ_BODY HTTP_RESP |
パラメータ |
Name:検査する Cookie の名前。 Context:現在のイベント コンテキストから Cookie を検査するのではなく、 たとえば、
注:
|
戻り値 |
名前が指定されている場合:
すべての Set-Cookie: A1=foobar; path=/path/to/file/; Domain=avinetworks.com; secure; HTTPOnly テーブルは次のようになります。 {path = '/path/to/file/', Domain = 'avinetworks.com', secure = true, HTTPOnly = true} 名前が指定されていない場合:
{name1 = 'value1', name2 = 'value2', name3 = 'value3'} |
例 |
foo という名前の Cookie の値を確認します。値が bar でない場合に、何らかの処理を行います。 if avi.http.get_cookie("foo") ~= "bar" then -- do something with the cookie header end |
追加の例
例 1:HTTP_RESP
イベントで get_cookie
し、属性テーブルを表示します。
value, attr_tbl = avi.vs.get_cookie("A1") local k, v = next(attr_tbl, nil) output = "" while k do if type(v) ~= "boolean" then output = output .. ", " .. k .. ": " .. v else output = output .. ", " .. k .. ": " .. tostring(v) end k, v = next(attr_tbl, k) end if v then output = output .. ", " .. k .. ": " .. v end avi.vs.log("value= " .. value .. "; attributes= " .. output)
応答にヘッダー Set-Cookie: A1=foobar; path=/path/to/file/; Domain=avinetworks.com; secure; HTTPOnly
がある場合、DataScript ログは "value= foobar; attributes= , path: /path/to/file/, Domain: avinetworks.com, secure: true, HTTPOnly: true"
になります。
例 2:name 引数を指定せずに get_cookie
します。
cookies = avi.vs.get_cookie() local k, v = next(cookies, nil) output = "" while k do output = output .. ", " .. k .. "=" .. v k, v = next(attr_tbl, k) end if v then output = output .. ", " .. k .. "=" .. v end avi.vs.log("cookies: " .. output)
DataScript ログの形式:"cookies: , name1=value1, name2=value=2, name3=value3, ..."
avi.http.get_cookie_names ( [context] )
機能 |
avi.http.get_cookie_names ( [context] ) |
説明 |
コンテキスト フラグによって決定される、HTTP 要求または応答に存在するすべての Cookie を返します。コンテキストが指定されていない場合は、DataScript を実行したイベントに基づいて選択されます。 |
イベント |
HTTP_REQ HTTP_REQ_BODY HTTP_RESP |
パラメータ |
Context:現在のイベント コンテキストから Cookie を検査する代わりに、 たとえば、HTTP 応答イベント中に、 |
戻り値 |
Cookie 名と、存在する Cookie の数を示す数字を含むテーブル。 |
例 |
cookies, count = avi.http.get_cookie_names() if count == 0 then -- No cookies found, do something end |
avi.http.get_header( [[name] [context]] )
機能 |
avi.http.get_header( [[name] [context]] ) |
説明 |
すべてのヘッダーとその値をキーと値のペアとして保持するテーブルを返します。 デフォルトでは、このコマンドは、 |
イベント |
HTTP_REQ HTTP_RESP LB_DONE |
パラメータ |
名前が指定されていない場合は、すべてのヘッダーのキー付きテーブルと、対応する値が返されます。ヘッダーが明示的に繰り返される場合(たとえば、複数の Set-Cookie ヘッダーがある場合)、テーブルにはテーブル配列である値を持つヘッダーの単一のキーが含まれます。 名前が指定されている場合は、指定されたヘッダーの値のみが文字列として返されます。指定されたヘッダーが繰り返される場合は、最初のヘッダー値のみが返されます。 コンテキスト フラグを使用すると、 |
戻り値 |
ヘッダーとその値のテーブル、または特定のヘッダー値の文字列。 |
例 |
次の例は、ShellShock 攻撃を防ぐために使用できます。この攻撃は、() の文字で始まるクライアント ヘッダーを組み込みます。 headers = avi.http.get_header() -- get all the HTTP headers for key,val in pairs(headers) do -- iterate through all headers if #val > 2 and string.sub(val, 1, 2) == "()" then avi.http.close_conn() -- reset the TCP connection end end |
avi.http.get_host_tokens( [start [, end]] )
機能 |
avi.http.get_host_tokens("MODIFIED" [,start [, end]]) or avi.http.get_host_tokens( [start [, end]] ) |
説明 |
|
イベント |
HTTP_REQ HTTP_RESP |
パラメータ |
|
戻り値 |
|
例 |
Host ヘッダーの例:http://www.avinetworks.com/a/b/index.htm?avi=true。 www.vmware.com へのリダイレクト アクションを含む HTTP 要求ポリシーがある場合 avi.http.get_host_tokens("MODIFIED", 1) 「www.vmware.com」を返します avi.http.get_host_tokens(1) 「www.avinetworks.com」を返します avi.http.get_host_tokens("MODIFIED",2,2) 「vmware」を返します avi.http.get_host_tokens(2,2) 「avinetworks」を返します avi.http.get_host_tokens(6) 「nil」を返します avi.http.get_host_tokens("MODIFIED", 6) 「nil」を返します domain = avi.http.get_host_tokens(2, 3) if domain ~= "avinetworks.com" then avi.http.redirect("new.avinetworks.com") end |
この API は、イベント SSL_PRECONNECT
、SSL_CLIENTHELLO
、および SSL_HANDSHAKE_DONE
ではサポートされていません。
avi.http.get_path( [false] )
機能 |
avi.http.get_path( [false] ) |
説明 |
クライアント要求の解析された URI パスを返します。つまり、最初の「/」で始まり、「?」で終わるがこの文字を除く、クエリ以外の URI の一部です。 要求の強調表示された部分が次のパスに含まれます。http://www.avinetworks.com/path1/path2/index.html?a=b&c=d |
イベント |
HTTP_REQ HTTP_RESP |
パラメータ |
オプションのフラグを false に設定すると、返された URI パスは解析されません(つまり URI デコードされません)。 |
戻り値 |
URI パスの文字列値 |
例 |
IIS ショップの場合は、PHP バックドアを検索するボットをドロップします if string.endswith(avi.http.get_path(), ".php") then avi.http.close_conn(true) end |
avi.http.get_path_tokens( [start [, end]] )
機能 |
avi.http.get_path_tokens( [start [, end]] ) |
説明 |
URI パス(区切り文字「/」で区切られた文字列)から個々のパス セクションまたはトークンを取得します。このコマンドを使用すると、開始インデックスまたは終了インデックスが指定されている場合に、パス トークンのセクション(以下の例を参照)を柔軟に取得できます。 |
イベント |
HTTP_REQ HTTP_RESP |
パラメータ |
|
戻り値 |
|
例 |
例:https://www.avinetworks.com/a/b/c/d/e.htm。 値が「a」、「b」、「c」、「d」、「e.htm」の配列であるテーブルを返します。すべてのトークンが返されます。 avi.http.get_path_tokens() 「a/b/c/d/e.htm」を返します avi.http.get_path_tokens(1) 「c/d/e.htm」を返します avi.http.get_path_tokens(3) 「b/c」を返します avi.http.get_path_tokens(2,3) 「nil」を返します avi.http.get_path_tokens(7) |
この API は、イベント SSL_PRECONNECT
、SSL_CLIENTHELLO
、および SSL_HANDSHAKE_DONE
ではサポートされていません。
avi.http.get_query( [arg_name | avi.QUERY_TABLE] [, decode] )
機能 |
avi.http.get_query( [arg_name | avi.QUERY_TABLE] [, decode] ) |
説明 |
URI のクエリまたは個々のクエリ値を返します。要求の強調表示された部分がクエリに含まれています。http://www.avinetworks.com/path1/path2/index.html? この例の a=b で、a が引数で、b が値です。 |
イベント |
HTTP_REQ HTTP_RESP |
パラメータ |
パラメータが指定されていない場合は、完全なクエリが返されます。arg_name が指定され、その引数がクエリに存在する場合、その値が返されます。 フラグ avi.QUERY_TABLE を指定すると、すべての引数を持つテーブルが返されます。
デフォルトでは、クエリは URI デコードとして返されます。たとえば、%2F ではなく、「/」です。decode パラメータは、返された値を URI デコードします。 デコード パラメータのデフォルト値は
注:
指定された形式の引数が |
戻り値 |
返されたクエリの文字列、個々の引数と値、または引数名がキーであるすべての引数と値を保持するテーブル。 |
例 1 |
if avi.http.get_query("intro", false) == "hello%20world" then avi.http.add_header("intro", false) end |
例 2 |
ローカル応答ページを介して、すべての URI クエリ引数をクライアントに返します。 local qa = avi.http.get_query(avi.QUERY_TABLE) local resp = "" for k, v in pairs(qa) do if type(v) == table then resp = resp .. k .. ":" .. table.concat(v, ",") .. ", " else resp = resp .. k .. ":" .. tostring(v) .. ", " -- when v is bool tostring() converts to string end end avi.http.response(200, {}, resp) 要求の場合:https://demo.avinetworks.com/path1/index.html?a=b&c=&d=e。 次の値が返されます。a:b, d:e, c:, |
この API は、イベント SSL_PRECONNECT
、SSL_CLIENTHELLO
、および SSL_HANDSHAKE_DONE
ではサポートされていません。
avi.http.get_req_body([size_in_kb])
機能 |
avi.http.get_req_body([size_in_kb]) |
説明 |
クライアント要求本文を返します。要求本文内にデータが存在しない場合(たとえば、要求が POST でない場合)、関数は nil を返します。
注:
|
イベント |
HTTP_REQ_DATA |
パラメータ |
size_in_kb:返される最大ペイロードをキロバイト単位で示すオプションのパラメータ。 指定しない場合は、要求ペイロード全体が返されます。
注:
仮想サービスで受け入れられる最大ペイロード サイズは、HTTP プロファイルの [DDoS] 設定によって制限できます。 |
戻り値 |
データが存在する場合、変数に格納されているデータを返し、それ以外の場合は |
例 |
body = avi.http.get_req_body(4) if string.match(body, "RandomString") then avi.http.response(404) end |
avi.http.get_request_id()
機能 |
avi.http.get_request_id() |
説明 |
要求の要求 ID を取得します。 |
イベント |
HTTP_REQ HTTP_RESP |
パラメータ |
パラメータはありません。 |
戻り値 |
要求 ID の文字列値(XXXX-XXXX-XXXX、長さは固定されていません)。 |
例 |
1.アプリケーション ログに要求 ID を追加します。 id=avi.http.get_request_id() avi.vs.log(id) 要求の送信後、要求 ID はアプリケーション ログに記録されます。 DataScript ログ: 2. 要求 ID をヘッダーに追加します。 id=avi.http.get_request_id() avi.http.add_header("Request ID", id) 要求の送信後、要求 ID はヘッダーに含まれます。
|
この API は、イベント SSL_PRECONNECT
、SSL_CLIENTHELLO
、および SSL_HANDSHAKE_DONE
ではサポートされていません。
avi.http.get_reqvar()
機能 |
avi.http.get_reqvar() |
説明 |
応答が完了すると、変数は自動的に設定解除されます。すべての Lua 値は、この変数内に格納できます。この変数タイプは、DataScript だけでなく、VMware NSX Advanced Load Balancer 内の他のコンポーネントでも使用できます。VMware NSX Advanced Load Balancer では、3 つのレベルのデータを変数に格納できます。
var = 1 if var == 2 then ... 2. HTTP 要求イベントおよび応答イベント全体(完全なフロー)にわたって永続的な変数を維持する必要がある場合は、 3. 接続間で保存する必要がある変数データや、仮想サービスをサポートする他のサービス エンジンにミラーリングする必要がある変数データでは、 |
イベント |
HTTP_REQ HTTP_RESP |
パラメータ |
Name:宣言する変数の名前を指定します。名前は文字列で、引用符で囲む必要があります。 |
戻り値 |
データが存在する場合、変数に格納されているデータを返します。 それ以外の場合は nil を返します。 |
関連 |
|
例 |
avi.http.set_reqvar("foo", 10)
if avi.http.get_reqvar("foo") > 5 then avi.vs.log("Foo=" .. avi.http.get_reqvar("foo")) end |
この API は、イベント SSL_PRECONNECT
、SSL_CLIENTHELLO
、および SSL_HANDSHAKE_DONE
ではサポートされていません。
avi.http.get_response_body(size [, offset])
機能 |
avi.http.get_response_body(size [,offset]) |
説明 |
指定したキロバイト オフセットから、バッファされた本文の指定されたキロバイト数を、32,768 KB (32 MB) を超えないように読み取ります。オフセットが指定されていない場合、バッファの先頭から読み取ります。バッファされた本文は、Lua スクリプトによって 1 回だけ処理されます。 |
イベント |
HTTP_RESP_DATA |
パラメータ |
size は、読み取るキロバイト数です。指定した場合、最小値は 1 です。 オプションの offset パラメータにより、最初のバイトが読み取られるキロバイト オフセットが決まります。指定した場合、最小値は 1 です。指定しない場合は 0 であるとされ、バッファの先頭からバイトが読み取られます。 |
戻り値 |
データが存在する場合、変数に格納されているデータを返します。それ以外の場合は nil を返します。 |
関連 |
avi.http.set_response_body_buffer_size():バッファする最大応答本文を設定します。 |
例 |
応答データ イベント スクリプト: local body = avi.http.get_response_body(50) if (body ~= nil) then local uuid = string.match(body, "uuid:(%w+)") if (uuid ~= nil) then local srv = avi.pool.server_ip() avi.vs.table_insert(uuid, srv) end end 要求イベント スクリプト: uuid = avi.http.get_cookie("uuid") if ( uuid ~= nil) then local srvr = avi.vs.table_lookup(uuid) if (srvr ~= nil) then avi.pool.select("pool-3", srvr) end end |
avi.http.get_uri( [false] )
機能 |
avi.http.get_uri( [false] ) |
説明 |
元のクライアントが要求した完全な URI(パスとクエリを含む)を返します。 要求の強調表示された部分が URI に含まれます。 http://www.avinetworks.com |
イベント |
HTTP_REQ HTTP_RESP |
パラメータ |
オプションの flag を |
戻り値 |
URI の文字列値。 |
例 |
要求に組み込まれているレイヤー化された URI の二重エンコード攻撃を確認します。 if string.contains(avi.http.get_uri(), "%") then avi.vs.log("Probable Double Encoding attack, conn closed.") avi.http.close_conn() end |
この API は、イベント SSL_PRECONNECT
、SSL_CLIENTHELLO
、および SSL_HANDSHAKE_DONE
ではサポートされていません。
avi.http.get_userid( )
機能 |
avi.http.get_userid() |
説明 |
接続に関連付けられているユーザー ID を返します。ユーザー ID は、ホワイトまたはブラックリストに対するユーザーの評価など、さまざまな方法で DataScript で使用できます。このフィールドは、検索可能な userid フィールドに入力するために、クライアント ログでも使用されます。このフィールドは次の方法で入力され、この順序で優先されます。 Custom:userid は、avi.http.set_userid() コマンドを使用して DataScript によって明示的に設定できます。たとえば、DataScript は Cookie を介して解析してユーザー名またはセッション ID を取得し、値を userid フィールドに挿入できます。 Basic Auth:仮想サービスで HTTP 基本認証が有効になっていて、クライアントが認証されている場合は、username フィールドを使用して userid が入力されます。 Client Certificate:クライアント証明書認証が有効になっている場合、SSL/TLS ハンドシェイク中に受信したクライアント証明書の user name フィールドを使用して userid が入力されます。 |
イベント |
HTTP_REQ HTTP_RESP |
パラメータ |
なし |
戻り値 |
ユーザー ID の文字列。空の場合は nil。 |
例 |
HTTP ヘッダー username が存在する場合は、その値を userid フィールドに挿入します。それ以外の場合は、フィールドを if not avi.http.get_userid() then avi.http.redirect("http://login.foo.com") end |
avi.http.hostname( )
機能 |
avi.http.hostname() |
説明 |
要求からホスト名を返します。このフィールドは、次の優先順位で次のアイテムから取得されます。
注:
フォーム hostname:port の要求行または Host ヘッダーの場合でも、ホスト名にポートは含まれません。 |
イベント |
HTTP_REQ HTTP_RESP |
パラメータ |
なし |
戻り値 |
クライアントによって要求されたホスト名の文字列。ポートは含まれません。 |
例 1 |
ホスト名がない場合は、TCP 接続を終了します。 host = avi.http.hostname() if not host then avi.http.close_conn() end |
例 2 |
HTTPS への変更中に、相対リダイレクトの location ヘッダーを絶対の値に書き換えます。この DataScript は、 書き換えられたヘッダーは次のようになります:https://www.test.com/index.htm loc = avi.http.get_header("Location") if loc and string.beginswith(loc, "/") then loc = "https://" .. avi.http.hostname() .. loc avi.http.replace_header("Location", loc) end |
SSL_PRECONNECT
、
SSL_CLIENTHELLO
、および
SSL_HANDSHAKE_DONE
ではサポートされていません。
avi.http.internal_status()
機能 |
avi.http.internal_status() |
説明 |
バックエンド サーバへの要求が失敗した理由を示す文字列を返します。ユーザーは、これを使用して、さまざまなタイプの障害に対する応答をカスタマイズしたり、理由を VMware NSX Advanced Load Balancer ログに記録したりできます。 |
イベント |
RESP_FAILED |
戻り値 |
失敗の理由 |
avi.http.method( )
機能 |
avi.http.method() |
説明 |
|
イベント |
HTTP_REQ HTTP_RESP |
パラメータ |
なし |
戻り値 |
メソッドの文字列 |
例 |
method = avi.http.method() if method ~= "GET" or method ~= "POST" then avi.http.response("403") end |
この API は、イベント SSL_PRECONNECT
、SSL_CLIENTHELLO
、および SSL_HANDSHAKE_DONE
ではサポートされていません。
avi.http.protocol( )
機能 |
avi.http.protocol() |
説明 |
接続の HTTP プロトコルを、プレーン HTTP の場合は http、HTTPS の場合は https として文字列で返します。 |
イベント |
HTTP_REQ HTTP_RESP |
パラメータ |
なし |
戻り値 |
http または https を返します |
例 |
HTTP 要求が SSL でない場合は、安全な HTTPS にリダイレクトします。 if avi.http.protocol() ~= "https" then avi.http.redirect("https://" .. avi.http.hostname() .. avi.http.get_uri()) end |
この API は、イベント SSL_PRECONNECT
、SSL_CLIENTHELLO
、SSL_HANDSHAKE_DONE
ではサポートされていません。
avi.http.oauth_get_token(TOKEN_TYPE)
機能 |
avi.http.oauth_get_token(TOKEN_TYPE) |
説明 |
セッションの確立後、ユーザーの OAuth セッションから TOKEN_TYPE のトークンを抽出します。トークン (OAUTH_ACCESS_TOKEN or OAUTH_ID_TOKEN) は、バックエンド アプリケーションにさらに送信できます。 |
イベント |
HTTP_REQ HTTP_RESP HTTP_RESP_DATA HTTP_POST_AUTH RESP_FAILED HTTP_REQ_DATA LB_DONE |
パラメータ |
この関数は、単一のパラメータ TOKEN_TYPE を取ります。 TOKEN_TYPE は、次の 2 種類の OAuth トークンのいずれかになります。
|
戻り値 |
トークンが存在する場合、要求されたトークンは文字列として返されます。それ以外の場合は、nil が返されます。 |
例 |
TOKEN_TYPE (avi.OAUTH_ACCESS_TOKEN) のトークンを抽出します。トークンが見つかった場合は、認可ヘッダーの下にバックエンドに送信されます。 token = avi.http.oauth_get_token(avi.OAUTH_ACCESS_TOKEN) if token == nil then avi.vs.log("Token not found") else avi.http.add_header("Authorization", token) end |
avi.http.redirect( uri [,status] )
機能 |
avi.http.redirect( uri [,status] ) |
説明 |
指定された状態コードを持つ指定された URI への HTTP リダイレクトを発行します。このコマンドは |
イベント |
HTTP_REQ |
パラメータ |
uri は、現在の要求をリダイレクトする新しい URI となる文字列です。 オプションの status コードは、リダイレクト状態コードの番号です。状態コード番号または定数文字列のいずれかを使用します。サポートされている状態コードは次のとおりです。
状態コードが指定されていない場合、デフォルトは 302 です。 |
戻り値 |
戻り値はありません。 |
例 |
サービス ポート 80 で受信した HTTP 要求をポート 443 にリダイレクトします。 if avi.vs.port() ~= "443" then avi.http.redirect("https://" .. avi.http.hostname() .. avi.http.get_uri()) end |
avi.http.remove_cookie( name1, [name2, ...] )
機能 |
avi.http.remove_cookie( name1, [name2, ...] ) |
説明 |
関数が実行された現在のコンテキストに基づいて、HTTP 要求または応答から指定された Cookie を削除します |
イベント |
HTTP_REQ HTTP_REQ_BODY HTTP_RESP |
パラメータ |
関数が実行された現在のコンテキストに基づいて、HTTP 要求または応答から指定された Cookie を削除します。Cookie 名が指定されていない場合は、そのコンテキスト内のすべての Cookie が削除されます。 |
戻り値 |
なし |
例 |
要求または応答から 2 つの Cookie を削除します。 avi.http.remove_cookie( "jsessionid", "lang" ) 要求または応答からすべての Cookie を削除します。 avi.http.remove_cookie() |
avi.http.remove_header( name )
機能 |
avi.http.remove_header( name ) |
説明 |
スクリプトが実行されたイベントに応じて、指定された HTTP ヘッダーのすべてのインスタンスを現在の要求または応答から削除します。 |
イベント |
HTTP_REQ HTTP_RESP LB_DONE |
パラメータ |
name は、ヘッダー名を指定する文字列です。name では、大文字と小文字が区別されません。 |
戻り値 |
戻り値はありません。 |
例 |
潜在的なサーバの脆弱性を特定できるサーバ応答ヘッダーを削除します。 avi.http.remove_header("Server") |
SSL_PRECONNECT
、
SSL_CLIENTHELLO
、および
SSL_HANDSHAKE_DONE
ではサポートされていません。
avi.http.replace_cookie( table )
機能 |
avi.http.replace_cookie( table ) |
説明 |
関数が実行される現在のコンテキストに基づいて、HTTP 要求または応答からの Cookie を置き換えます。指定されたパラメータを使用すると、既存の Cookie 属性を変更できます。指定された Cookie がすでに存在する場合、関数は最初に Cookie の既存のすべてのインスタンスを削除し、指定された値を持つ新しい Cookie を追加します。Cookie がまだ存在しない場合、コマンドの動作は |
イベント |
HTTP_REQ HTTP_RESP |
パラメータ |
Cookie の名前と値のペア(HTTP 要求コンテキスト用)と、必要に応じてパス、ドメインなどの他の Cookie 属性値ペア(HTTP 応答用)の table 。 |
要求パラメータ |
HTTP 要求イベント:Cookie の値は HTTP 要求の Cookie ヘッダーで置き換えられ、そのようなヘッダーが存在しない場合は Cookie ヘッダーが追加されます。 avi.http.replace_cookie( name1, value1 [, name2, value2] ) name は変更する Cookie の名前です。 value は Cookie の新しい値です。 HTTP 要求コンテキストで、すべての引数は Cookie の名前と値のペアとして扱われます。つまり、関数は「ドメイン」、「パス」などの Cookie 属性を無視し、それらを、置き換える別の Cookie として扱います。 |
応答パラメータ |
HTTP 応答イベント:HTTP 応答コンテキストで呼び出されると、HTTP 応答の Set-Cookie ヘッダーで Cookie の値が置き換えられます。そのようなヘッダーが存在しない場合は、Set-Cookie ヘッダーが作成されます。 HTTP 応答コンテキストでは、最初の 2 つの引数のみが Cookie の名前と値のペアとして扱われ、後続の引数は Domain、Path などの Cookie 属性とそれに対応する値として解釈されます。 avi.http.replace_cookie( name, value, path, domain, expires, maxage, secure, httponly ) name は変更する Cookie の名前です。 value は、Cookie の新しい値またはデータ フィールドです。 path は、path 属性の値(文字列)です。 domain は、domain 属性の値(文字列)です。 expires は、expires 属性の値(整数)です。 maxage は、maxage 属性の値(整数)です。 secure は、secure 属性の値(ブール値)です。 httponly は、httponly 属性の値(ブール値)です。 |
戻り値 |
なし |
HTTP 要求の例 |
メソッドの例 1:jsessionid=123 と lang=en の 2 つの Cookie の値を置き換えます cookie_table = {jsessionid="123", lang="en"} avi.http.replace_cookie( cookie_table ) メソッドの例 2:jsessionid=123 と lang=en の 2 つの Cookie を置き換えます avi.http.replace_cookie( "jsessionid", "123", "lang", "en" ) |
HTTP 応答の例 |
例 1:cookie jsessionid を値
cookie_table = {jsessionid="123", path="/", domain="www.avinetworks.com"} avi.http.replace_cookie( cookie_table ) 例 2:この形式では、順序が重要です。3 番目の引数はパス、4 番目はドメイン、5 番目は期限切れ、6 番目は最大値、7 番目は httponly フラグ、8 番目は secure フラグにする必要があります。 avi.http.replace_cookie( "jsessionid", "123", "/", "www.avinetworks.com" ) expires 属性と maxage 属性が必要ない場合は、引数ごとに値 0 が渡されます。 avi.http.replace_cookie( "jsessionid", "123", "/", "a.b.c", 0, 0, true, true) |
avi.http.replace_header( name, value )
機能 |
avi.http.replace_header( name, value ) |
説明 |
既存の HTTP ヘッダーを指定された値に設定し、同じ名前の既存のすべてのヘッダーをオーバーライドします。ヘッダーがまだ存在しない場合は、追加されます。ヘッダー名は、既存のヘッダーと一致するために大文字と小文字を区別せずに扱われます。 |
イベント |
HTTP_REQ HTTP_RESP LB_DONE |
パラメータ |
name は、ヘッダー名を指定する文字列です。 value は、新しいヘッダー値を指定する文字列です。 |
戻り値 |
戻り値はありません。 |
例 |
HTTP 要求の「X-Forwarded-For」という名前のヘッダーを変更して、仮想サービスの IP アドレスを追加します。 ff = avi.http.get_header("x_forwarded_for") if xff then avi.http.replace_header("X-Forwarded-For", xff ..", ".. avi.vs_ip()) end |
この API は、イベント SSL_PRECONNECT
、SSL_CLIENTHELLO
、および SSL_HANDSHAKE_DONE
ではサポートされていません。
avi.http.response( status, [headers, [body]] )
機能 |
avi.http.response (status, {headers}, body) |
説明 |
カスタム HTTP 応答を使用して HTTP 要求に応答します。 |
イベント |
HTTP_REQ HTTP_RESP LB_DONE |
パラメータ |
status は、HTTP 状態コードを指定するために使用されます。サポートされている状態コードについては、以下のリストを参照してください。 応答にヘッダーを追加するテーブルを指定するには、オプションの headers を使用します。 使用されるデフォルトのコンテンツ タイプは「text/plain」です。したがって、本文が「text/html」などの他の MIME タイプの場合は、ヘッダー パラメータを使用して対応するコンテンツ タイプを指定する必要があります。 オプションの body フラグは、カスタム HTTP 応答本文を指定するために使用される文字列です。 返されたページにグラフィックを挿入する方法については、「DataScript からイメージを返す」を参照してください。 |
サポートされる状態コード |
|
戻り値 |
戻り値はありません。 |
例 |
Shellshock 攻撃を防止し、わかりやすいメッセージを攻撃者に通知します。 local h = avi.http.get_headers() for k, v in pairs(h) do if string.sub(v, 1, 2) == "()" and #v > 2 then avi.http.response(404, {content_type="text/html"}, "Blocking Shellshock Attack!") end end |
avi.http.saml_session_decrypt( )
機能 |
avi.http.saml_session_decrypt() |
説明 |
クライアント要求で見つかった、復号化された SAML セッション Cookie の値を返します。 |
イベント |
HTTP_REQ。 |
パラメータ |
なし。 |
戻り値 |
復号された SAML セッション Cookie の文字列(存在する場合)、それ以外の場合は nil。 |
例 |
SAML セッション Cookie が存在する場合に、何らかの処理を行います。 cookie_val = avi.http.saml_session_decrypt() if (cookie_val) – action to be executed |
avi.http.scheme( )
機能 |
avi.http.scheme() |
説明 |
HTTP プロトコルを「://」と連結された文字列として返します。プレーン HTTP の場合は「http://」が返され、安全な HTTPS の場合は「https://」が返されます。 |
イベント |
HTTP_REQ HTTP_RESP |
パラメータ |
なし |
戻り値 |
「http://」または「https://」を返します |
例 |
受信の際と同じプロトコルでクライアントを test.com にリダイレクトします。 if avi.http.hostname() ~= "test.com" then avi.http.redirect(avi.http.scheme() .. "test.com" .. avi.http.get_uri()) end |
avi.http.secure( )
機能 |
avi.http.secure() |
説明 |
クライアントから仮想サービスへの接続が SSL/TLS モードで動作する場合は文字列「 |
イベント |
HTTP_REQ。 HTTP_RESP。 |
パラメータ |
なし。 |
戻り値 |
文字列、true の場合は「on」、false の場合は「nil」。 |
例 |
HTTP 要求が SSL でない場合は、安全な HTTPS にリダイレクトします。 if avi.http.secure() ~= "on" then avi.http.redirect("https://" .. avi.http.hostname() .. avi.http.get_uri()) end |
avi.http.set_path( new_uri )
機能 |
avi.http.set_path( new_uri ) |
説明 |
要求がサーバに送信される前に、現在の HTTP 要求の URI パスを new_path に書き換えます。通常、このアクションはリダイレクトとは対照的にクライアントに対して透過的であり、クライアントは強制的に新しい要求を送信し、往復時間コストが発生します。 要求の強調表示された部分がパスに含まれます。 http://www.avinetworks.com |
イベント |
HTTP_REQ。 |
パラメータ |
新しい URI パスを指定する必要があります。 |
戻り値 |
戻り値はありません。 |
例 |
サーバに要求を送信する前に空白の URL に「/」を追加して、リダイレクト RTT を保存します。 if avi.http.get_path() == nil then avi.http.set_path("/") end |
avi.http.set_query( integer | string | table )
機能 |
avi.http.set_query( integer | string | table ) |
説明 |
要求の URI クエリを設定します。 要求の強調表示された部分がクエリに含まれます: http://www.avinetworks.com/path1/path2/index.html? この例の a=b で、a は引数で、b は値です。 |
イベント |
HTTP_REQ |
パラメータ |
新しいクエリには、 |
戻り値 |
値は返されません。 |
例 |
if avi.http.get_path() == "/sales" then avi.http.set_path("/") avi.http.set_query("sales=true") end |
avi.http.set_reqvar()
機能 |
avi.http.set_reqvar() |
説明 |
HTTP 要求イベントから任意のデータを変数に設定(書き込み)します。これらの変数には、 1. 現在のイベント中にのみ必要な変数データの場合は、変数をデータにマッピングします。 var = 1 if var == 2 then ... 2. HTTP 要求イベントおよび応答イベント全体(完全なフロー)にわたって永続的な変数を維持する必要がある場合は、avi.http.set_reqvar() 関数および avi.http.get_reqvar() 関数を使用します。 3. 接続間で保存する必要がある変数データや、仮想サービスをサポートする他のサービス エンジンにミラーリングする必要がある変数データでは、avi.vs.table_insert() を使用します。 |
イベント |
HTTP_REQ HTTP_RESP。 |
パラメータ |
Name:宣言する変数の名前を指定します。 名前は文字列で、引用符で囲む必要があります。 Value:新しく宣言された変数の値を設定します。 これは、文字列か整数にできます。 |
戻り値 |
なし。 |
バージョン |
17.1+。 |
関連 |
avi.http.get_reqvar():格納された変数を avi.http.set_reqvar 関数から取得します。 |
例 |
HTTP_REQ イベント: avi.http.set_reqvar("foo", 10) HTTP_RESP イベント: if avi.http.get_reqvar("foo") > 5 then avi.vs.log("Foo=" .. avi.http.get_reqvar("foo")) end |
この API は、イベント SSL_PRECONNECT
、SSL_CLIENTHELLO
、および SSL_HANDSHAKE_DONE
ではサポートされていません。
avi.http.set_response_body_buffer_size(size)
機能 |
avi.http.set_response_body_buffer_size( size ) |
説明 |
バッファする最大応答本文を設定します。 |
イベント |
HTTP_RESP |
パラメータ |
size は、バッファするキロバイト数です。範囲は 1 ~ 32,768 KB (32 GB) です。 メモリ割り当てに関する注意事項: バックエンド サーバからの応答の場合、VMware NSX Advanced Load Balancer は最初に 4 KB を割り当て、それより大きい応答に対しては、割り当てが次のように 48 KB のチャンクで行われます。ここで、ACRB は応答本文の実際の長さです。
|
戻り値 |
なし |
関連 |
avi.http.get_response_body() は、指定されたバイト オフセットから始まるバッファされた本文の指定されたバイト数を(32,768 KB を超えないように)読み取ります。 |
例 1 |
応答イベント スクリプト: avi.http.set_response_body_buffer_size(50) |
avi.http.set_server_timeout( time )
機能 |
avi.http.set_server_timeout( time ) |
説明 |
特定の要求のカスタム タイムアウト値を設定します。デフォルトでは、VMware NSX Advanced Load Balancer はサーバの応答を 1 時間許可しますが、通常、クライアントはこの時間枠の前でも接続を終了します。このタイムアウト関数は、成功したかどうかにかかわらず、高速応答が必要な高速取引アプリケーションに役立ちます。 デフォルトでは、VMware NSX Advanced Load Balancer はサーバ タイムアウト時に 504(ゲートウェイ タイムアウト)エラーを送信します。VMware NSX Advanced Load Balancer が送信するエラー メッセージを変更するには、 この関数で指定されたタイムアウト値は、2 つの方法で適用されます。まず、サーバ RTT に適用されます。これは、サーバとの接続を確立するのにかかる時間を測定します。これとは別に、同じタイムアウト値がアプリケーション応答時間にも適用されます。これは、VMware NSX Advanced Load Balancer サービス エンジンから送信された要求の最後のバイトから、アプリケーション応答の最初のバイトを受信するまでの時間を測定します。いずれかの時間がタイムアウト値を超えると、クライアントは HTTP 504 応答を送信します。 WAF 検査や HTTP 要求キューなどの機能は、サービス エンジンから送信される要求の前に実行されるため、時間に影響しません。 |
イベント |
HTTP_REQ。 HTTP_RESP。 |
パラメータ |
time は、サーバ接続が確立される時間(ミリ秒単位)と、Avi が要求の送信後に応答の最初のバイトを受信するまでの時間です。 最小値は 1 です。 最大時間はありません。 デフォルトでは、VMware NSX Advanced Load Balancer は 3,600,000 ミリ秒(1 時間)を使用します。 |
戻り値 |
戻り値はありません。 |
例 |
高頻度の取引パスを対象とする要求には、3 秒間の厳密なタイムアウトが適用されますが、他のパスには適用されません。 - HTTP_REQ event if string.beginswith(avi.http.get_path(), "/hft") then avi.http.set_server_timeout(3000) end – HTTP_RESP_FAILED event if avi.http.internal_status() == "504" then avi.http.response(404, {content_type="text/html"} , "Server took too long to respond.") end |
この API は、イベント SSL_PRECONNECT
、SSL_CLIENTHELLO
、および SSL_HANDSHAKE_DONE
ではサポートされていません。
avi.http.set_uri( new_uri )
機能 |
avi.http.set_uri( new_uri ) |
説明 |
要求がサーバに送信される前に、現在の HTTP 要求の URI を new_uri に書き換えます。このアクションはリダイレクトとは対照的にクライアントに対して透過的であり、クライアントは強制的に新しい要求を送信し、往復時間コストが発生します。 要求の強調表示された部分が URI に含まれます。 http://www.avinetworks.com |
イベント |
HTTP_REQ。 |
パラメータ |
新しい URI を指定する必要があります。 |
戻り値 |
戻り値はありません。 |
例 |
空白の URI に「/」文字を事前に追加して、リダイレクト RTT を保存します。 if avi.http.get_uri() == nil then avi.http.set_uri("/") end |
avi.http.set_userid( )
機能 |
avi.http.set_userid() |
説明 |
接続に関連付けられているユーザー ID を設定します。このフィールドをこのコマンドで設定すると、HTTP 基本認証またはクライアント証明書を介して入力されている場合はフィールドが上書きされます。 |
イベント |
HTTP_REQ。 HTTP_RESP。 |
パラメータ |
なし。 |
戻り値 |
値は返されません。 |
例 |
userid が存在しない場合は、JSessionID Cookie の値を入力します。 if not avi.http.get_userid() then if avi.http.get_cookie("jsessionid") then avi.http.set_userid(avi.http.get_cookie("jsessionid")) else avi.http.set_userid("Unknown") end end |
avi.http.status( )
機能 |
avi.http.status() |
説明 |
クライアントに送信される応答状態コード。これは、DataScript でオーバーライドできるため、サーバから返される状態コードとは異なる場合があります。avi.var.server_status の例を参照してください。 |
イベント |
HTTP_RESP。 |
パラメータ |
なし。 |
戻り値 |
状態コードの文字列(200 など)。 |
例 |
if avi.http.status() == "400" then avi.http.response("404") end |
avi.http.update_cookie()
機能 |
avi.http.update_cookie( [context] ) |
説明 |
HTTP 応答の既存の Cookie 属性値を変更します。 指定した Cookie (name) が存在する場合
Cookie が存在しない場合は、何も行いません。 |
イベント |
HTTP_RESP。 |
パラメータ |
name:変更する Cookie の名前。 attr:変更/追加が必要な Cookie (name) の属性。 attr_val:既存の Cookie 属性値に置き換える値。 属性: path は、path 属性の値(文字列)です。 domain は、domain 属性の値(文字列)です。 expires は、expires 属性の値(整数)です。 maxage は、maxage 属性の値(整数)です。 httponly は、httponly 属性の値(ブール値)です。 secure は、secure 属性の値(ブール値)です。 samesite は、同じサイト属性の同じサイト属性値 ( |
戻り値 |
なし。 |
例 1 - 単一の Set-Cookie 属性の変更: |
名前が「name1」でパスが「/dummy」の単純な Cookie を送信するサーバの例: server cookie example : Set-Cookie: name1=value1; path=/dummy サーバの Cookie のパスを /dummy1 DataScript に変更してパス属性を変更する場合: avi.http.update_cookie("name1","path","/dummy1") Set-Cookie は次のように変更されます Set-Cookie: name1=value1; Path=/dummy1 |
例 2 - Set-cookie 属性の追加と変更: |
名前が「name2」でパスが「/dummy」の単純な Cookie を送信するサーバの例: server cookie example: Set-Cookie: name2=value2; path=/dummy ドメインが指定されたこのサーバ Cookie を「www.avinetworks2.com」、HttpOnly に更新する場合は、パスを「/dummy2」に変更し、有効期限を次の 30 分に設定します。Cookie 属性を追加および変更する DataScript の例: cookie_name="name2" if avi.http.cookie_exists(cookie_name) then avi.http.update_cookie(cookie_name, "expires", os.time() + 1800 , "path", "/dummy2", "domain", "www.avinetworks2.com", "httponly", true) end Set-Cookie は次のように変更されます: Set-Cookie: name2=value2; Path=/dummy2; Domain=www.avinetworks2.com; HttpOnly |
avi.http.update_cookie() API には属性の順序がありません。
Max-Age Cookie 属性は、avi.http.update_cookie() を使用して変更または更新できます。
avi.http.update_cookie() API を使用して、個々の属性または複数の属性を既存の Cookie に追加できます。
avi.http.update_cookie() が同じ Cookie 名に対して複数回呼び出されると、同じ Cookie 名に対して複数の Set-Cookie ヘッダーが作成される可能性があります。したがって、同じ Cookie に複数の属性を指定する必要がある場合は、API を使用して、上記のように 1 回の呼び出しで複数の属性を更新します。
expires は、エポック開始時刻 1970 年 1 月 1 日から計算されます。したがって、ユーザーが現在時刻から 1 時間後に期限切れにする場合は、os.time + 3600 を使用する必要があります(単位は秒単位であるため)。
avi.http.disable_auth()
機能 |
avi.http.disable_auth(auth_type) |
説明 |
クライアント認証を無効にします。 |
イベント |
HTTP_AUTH |
パラメータ |
SAML、LDAP、PAA、JWT。 |
戻り値 |
戻り値はありません。 |
例 |
if avi.http.get_path() == "/kb/" then avi.http.disable_auth(“SAML”) end |