HTTP

HTTPメソッド

  • GET
    • 情報取得メソッド
  • POST
  • PUT
  • DELETE
    • リソース削除メソッド

HTTPリクエスト

ポストデータ

  • HTMLのPOST指定のformから送信されるデータ
  • JSPのrequestオブジェクトから下記のメソッドで情報を取得できる
    • getParameter
    • getParameterValues
  • リクエストボディのセットされて送信される

クエリ情報

  • URLの末尾の"?"以降に「キー=値」のセットで付加される簡易な情報
  • 複数のセットがある場合は"&"で連結される
  • URLに直接指定するほか、HTMLのGET指定のformから送信されるデータ
  • formのmethod属性が省略された場合もクエリ情報として送信される
  • JSPのrequestオブジェクトから下記のメソッドで情報を取得できる
    • getParameter
  • クエリ情報に特殊文字が含まれる場合は、あらかじめエンコードしておく必要がある(form経由の場合はエンコード不要)
  • URLに使用可能な文字数を超えて送信できない(2,083文字)
    • FireFoxの場合は制限が無いが、動作が遅くなる場合もあるらしい
  • データがアドレス欄に露出してしまう

ヘッダ情報

  • 「名前: 値」形式
  • 種類
    • 一般ヘッダ(要求/応答時双方で利用)
    • エンティティヘッダ(コンテンツに関する情報)
    • リクエスト(要求)ヘッダ(クライアントに関する情報)
    • レスポンス(応答)ヘッダ(その他)
  • JSPのrequestオブジェクトから下記のメソッドで情報を取得できる
    • getHeaderNames
  • ただし、情報取得専用メソッドが存在するヘッダについてはそちらを使う

■ヘッダ例
種類 ヘッダ名 概要
一般 Cache-Control キャッシュルールを規定する
Connection プロキシ(中間)サーバで削除すべきHTTPヘッダを指定
Date コンテンツ生成日時
Pragma キャッシングを利用するか(下位互換用のヘッダ)
Transfer-Encoding コンテンツの転送エンコーディング方式
リクエスト Accept クライアント対応コンテンツの種類(優先順)
Accept-Language クライアント対応言語(優先順)
Authorization 認証情報
Cookie クライアントに保存されたクッキーデータを送信
Host 要求先ホスト名
If-Modified-Since 指定日時以降にコンテンツが更新されている場合にのみ、サーバはデータを送信
Proxy-Authorization プロキシサーバ用の認証情報
Range 要求リソース範囲
Referer リンク元URI
User-Agent クライアントの種類
レスポンス ETag リソースを一意に特定するためのキー情報(コンテンツが更新されていないかどうかを特定する場合などに使用)
Location クライアントに新しいURIに移動するように促す
Server サーバの種類
Set-Cookie クライアントにクッキーを送信
WWW-Authenticate クライアントに認証を要求
エンティティ Content-Encoding コンテンツのエンコーディング方式
Content-Length コンテンツサイズ
Content-Type コンテンツの種類
Expires コンテンツの有効期限
Last-Modified コンテンツの最終更新年月日

クッキー

  • サーバがクライアントに対して自由に読み書きできるテキスト
  • クッキーの有効期限
    • 負数をセットした場合、ブラウザの終了時に削除される
    • 0をセットした場合、その場で削除される
    • 1以上をセットすると、その秒数分保持される
  • クッキーのデメリット
    • クライアント側でクッキーを受け入れないように設定することが可能
    • クライアント側でクッキーの改竄や削除が可能
    • 実データがネットワーク上を流れてしまう
  • クッキーの制約
    • 1つのホスト、ドメイン当たりの最大個数は20個(総数では300個以内)
    • クッキー1つあたりの最大サイズは4096バイト

セッション情報

  • 長期間にわたって情報を保持するには不向き
  • ユーザがブラウザを開いている間だけアプリケーション内で情報を受け渡しする場合にはクッキーより手軽でセキュアな仕組み
  • session
    • JSPの暗黙オブジェクトの1つ
    • 下記のメソッドを使って読み書きする
      • getAttribute
      • setAttribute
    • @pageディレクティブのsession属性がfalseの場合は使えない
    • sessionが不要の場合はsession属性をfalseにしておく(サーバリソースの節約)
  • sessionを使うと…
  1. クライアントからサーバにリクエスト送信
  2. サーバからのレスポンスにSet-Cookieヘッダの値としてセッションIDが付加される(JSESSIONID)
  3. クライアントからサーバに2回目以降のリクエスト送信時、Cookieヘッダの値として、受け取ったJSESSIONIDを付加して送る
  4. サーバをそのセッションIDに該当するセッションを使って処理をし、レスポンスを返す
  • セッションの破棄方法
    • 明示的な破棄(session.invalidate())
    • 有効期限を設定する(session.setMaxInactiveInteval())
    • web.xmlにセッションの有効期限を設定する
      • <session-config><session-timeout>
  • セッションの寿命
    • 明示的に破棄されるか有効期限を過ぎない限り、クライアントを閉じてもサーバ上で生き続ける

ieHTTPHeaders

http://www.blunck.info/iehttpheaders/iehttpheaders.html
⇒IE上でHTTPによる通信内容をトレースするツール

タグ:

+ タグ編集
  • タグ:
最終更新:2010年03月03日 17:01