このページの目的
BIG-IPのiRuleを使うと、HTTPリクエストの内容に基づいた様々な処理を書くことができますが、iRuleを書く度にDevCentralを開いて「えーと、HTTPリクエスト内のあの値をとるには・・・」と調べるのが面倒なので、まとめてみました。
簡易情報
例えば、以下のようなURLのリクエストをBIG-IPが受け取ったとします。
コマンド | 説明 | サンプルURLを対象にした場合の値 |
---|---|---|
HTTP::host | ホストヘッダの値を返します。 | www.example.com |
HTTP::path | ファイルパスを返します。注意点として、「?」(はてな)文字がセパレータになっているので、これがない場合は、末尾まで全てをファイルパスと認識します。 | /directory/file |
HTTP::query | URLのうち、引数部分を返します。ファイルパスとのセパレータとなっている**「?」**(はてな)は含みません。 | var1=val1&var2=val2 |
HTTTP::uri | HTTPリクエスト内のURI部分全体を返します | /directory/file?var1=val1&var2=val2 |
(もう少し)詳細な情報
DevCentralのHTTPの項から、HTTPリクエストを対象に情報を取得できる変数をまとめてみました。上で記載したものは除外してます。あと、あまり利用頻度が高くなさそうなものも省きました。
コマンド | 説明 |
---|---|
HTTP::cookie | **"HTTP::cookie <name>"**で、任意の名前のHTTP Cookieの値を応答します。 **"HTTP cookie count"**で、HTTPリクエストに含まれるcookieの数を応答します。 |
HTTP::header | **"HTTP::header <name>"**で、任意のHTTPヘッダーの値を応答します。対象のHTTPヘッダがHTTPリクエスト中に存在しない場合は、nullが返ります。 **"HTTP::header names"**で、すべてのHTTPヘッダ名をList型で返します。 **"HTTP::header count <name>"**で、任意のHTTPヘッダーがHTTPリクエストに含まれている数を応答します。 **"HTTP::header exists <name>"**で、任意のHTTPヘッダーがHTTPリクエストに含まれている場合Trueを応答します。 |
HTTP::is_keepalive | HTTP Keep-Aliveが有効なHTTPリクエストの場合は、Trueを返します。 |
HTTP::method | HTTPリクエストのメソッドを応答します。 |
HTTP::password | Basic認証のリクエストに含まれる、パスワードの値を応答します。 |
HTTP::request | HTTPリクエストのヘッダー部を文字列として応答します。 |
HTTP::request_num | 同一TCPコネクション内のHTTPトランザクション数を応答します。 |
HTTP::username | Basic認証のリクエストに含まれる、ユーザ名を応答します。 |
HTTP::version | HTTPリクストのHTTPバージョンを応答します。 |
補足:HTTPリクエストのBody部を取得したい場合
**HTTP::collectを使用してBody部を取得し、 HTTP_REQUEST_DATA**イベントを使う必要があります。
参考URL(DevCentral)
免責事項
本ページの内容に誤り等があり、参考にされた方がなんらかの損害を被った場合、一切の責任は負いません。