HTTPヘッダ情報

 


 


ヘッダ情報とは要求のHTTPメッセージのパケットのヘッダ部分の情報のことを云う。ヘッダ部分は複数のヘッダ行で構成されている。先頭の行のヘッダは次のようである。

GET / HTTP/1.1

GETはメソッドと呼び、コマンドの種別を示す。10個ほどのメソッドが定義されているが、皆さんが利用するメソッドはGETPOSTの二つであろう。HTTP/1.1は使われているプロトコルとそのバージョンである。現在のバージョンは1.1だが、古い1.0のバージョンのクライアントも存在している(NetscapeNavigatorもそうである)ので注意が必要である。付属資料(HTTPメソッド一覧)はメソッドの一覧である。ひととおり目を通しておいて頂きたい。

 

2行目からのヘッダ行には多種のものが存在するが、そのうち主要なものを付属資料(HTTPヘッダ一覧)に示す。詳細はhttp://www.w3.org/Protocols/にある仕様書(RFC 2616: Hypertext Transfer Protocol -- HTTP/1.1)を参照されたい。

 

こんなに多くのヘッダがあると一体どうなるのだろうかと心配する人も出よう。しかしながら通常のアプリケーションではこれらの一部しか使われない。必要としないヘッダがついてきても通常これを無視すればよい。ただし大事なヘッダ情報を無視しないよう注意が必要である。

 

皆さんが良く利用するヘッダは次のようなものであろう:

Accept

クライアントが受理可能なMIMEタイプ

Accept-Charset

ISO-8859-1などクライアントが処理可能な文字セット

Connection

TCPソケットを接続したままにするか否か(keep-aliveまたはclose

From

要求者のe-mailアドレス(Spiderが使う)

Host

元のURLにあるホストとポート(HTTP/1.1では必須)

If-Modified-Since

これより新しいバージョンのコンテントを送信要求

Pragma

no-cacheという値はプロキシにキャッシュしないでいつも要求を転送するよう指示

Referer

参照しているウェブ・ページのURL

User-Agent

ブラウザまたはクライアント

 

HttpServletRequestインターフェイスには初期要求行を除くヘッダ行情報の取得用に以下のメソッドが定義されている。

getHeader

名前を指定して値を取得

getHeaders

列挙型でヘッダの全てを取得

getHeaderNames

列挙型でヘッダ名の全てを取得

 

更にヘッダにはint型あるいはDate型オブジェクトで返したほうが便利なものもある。その為にHttpServletRequestインターフェイスには次のようなメソッドも用意されている。

getIntHeader

名前を指定してint値で整数型ヘッダを取得

getDateHeader

名前を指定してlong値で日付型ヘッダを取得

 

初期要求行の内容を知るにはどうしたらよいのであろうか?それには以下のメソッドを使用する:

getMethod

String型でHTTPメソッドを取得

getServerName

String型でサーバ名を取得

getServerPort

intでサーバのTCPポート番号を取得

getRequestURI

String型で要求URIを取得

getQueryString

String型でクエリ文字列を取得(例えば”http://localhost:8080/HttpRequestDump

?MyName=Terry&Yesterday=Wednesday”というURLの場合は”MyName=Terry&Yesterday=Wednesday”なる文字列が返される)

 

 

とりあえず次のHttpRequestDumpというサーブレットで、要求情報をダンプしてクライアントのブラウザ画面に表示してみよう。上記のメソッド以外にも、HttpServletRequestクラスや、そのスーパークラスであるServletRequestで定義されている大部分のメソッドが、このサーブレットで使われている。

 

 

前節     目次     次節