LoginSignup
10
11

More than 5 years have passed since last update.

iRuleでHTTPリクエストに含まれる値を取得する

Last updated at Posted at 2017-10-25

このページの目的

BIG-IPのiRuleを使うと、HTTPリクエストの内容に基づいた様々な処理を書くことができますが、iRuleを書く度にDevCentralを開いて「えーと、HTTPリクエスト内のあの値をとるには・・・」と調べるのが面倒なので、まとめてみました。

簡易情報

例えば、以下のようなURLのリクエストをBIG-IPが受け取ったとします。

サンプルURL
iRule_HTTP変数.png

コマンド 説明 サンプル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)

免責事項

本ページの内容に誤り等があり、参考にされた方がなんらかの損害を被った場合、一切の責任は負いません。

10
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
11