クッキーとセッションの研究ノートとHTTPプロトコル

HTTP

HTTP:ハイパーテキスト転送プロトコルハイパーテキスト転送プロトコルは、定義されたときに、クライアント側とサーバー側の通信、伝送データフォーマット。
特長:

  1. TCP / IPベースのハイレベル契約
  2. デフォルトのポート番号は80です
  3. 要求/応答モデルに基づく:応答時間は最初の要求に対応
  4. ステートレス:各要求は、互いに独立して、相互作用のデータで、顧客に関する情報を保持しないことはできません

HTTP1.0は、各要求は今HTTP1.0バージョンを使用して、新しい接続を確立しますが、それは、クライアントがサーバー接続チャネルへの要求が開いたままになります送信された接続を再利用します。ここで非永続的な接続と持続的な接続

要求メッセージのデータフォーマット

  1. リクエストライン:リクエストメソッド、リクエストURLからなる要求プロトコル/バージョン
    リクエストメソッド:HTTPプロトコルはリクエストメソッドの7種類を有し、一般的には二種類あり、一つはGETのPOSTです。GETとPOSTの違い:

    取得する:

    • URLの後ろに要求行のリクエストパラメータ、
    • URLは、限られた長さを要求します
    • 安全でありません

    役職:

    • 種は、リクエストボディ内のパラメータを要求します
    • urlは無制限の長さを要求します
    • 比較的安全
  2. リクエストヘッダ:リクエストヘッダの値:クライアントのブラウザは、フォーマット内の情報の一部はヘッダ名を要求されたサーバに指示します。2つの一般的なリクエストヘッダがあります。

    1. User-Agent:クライアントは、ブラウザのバージョン情報を使用してサーバに指示します
    2. リファラー:urlには、現在の要求から来ブラウザに指示
  3. 要求ブランクライン:要求ヘッダと要求POSTリクエスト体を分割するため、空白行です。

  4. リクエストボディ(本体):パッケージPOST要求パラメータ要求メッセージは、例えば:

    POST /login.html	HTTP/1.1
    Host: localhost
    User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0
    Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
    Accept-Encoding: gzip, deflate
    Referer: http://localhost/login.html
    Connection: keep-alive
    Upgrade-Insecure-Requests: 1
    			
    username=zhangsan
    

    最初の行は、要求ラインで、ヘッダ2-9アクション要求、アクション要求ブランクライン10、11は、要求の本体です。

メッセージの応答データ・フォーマット

HTTP/1.1 200 OK
Connection:...
Date:...
Server:...
Last-Modified:...
Content-Length:...
Content-Type:...

(data data data data data ...)

最初に応答し、それに応答してその空行に応答して、ラインの初期状態:応答メッセージは、3つの部分を有しています。プロトコル/バージョン、ステータスコードと、対応するステータス情報:ステータスラインは、3つのフィールドがあります。対応する応答ヘッダ、Connectionは:TCP接続、日付を送信した後、パケットを処理する方法を示している:ヘッダは、サーバが生成した応答メッセージの日時を送信する旨の応答を表し、サーバー:パケットがサーバによって生成されていることを示すもの、最終更新:応答ラインは、オブジェクトの作成または最後に変更され、コンテンツ長の日付と時刻を示します。Content-Typeで、オブジェクトに送信されるバイト数を示します:はい応じて、どのようなオブジェクト本体を示しています。これはすなわち、それは要求されたオブジェクト自体を含む応答メッセージに応答して本体部です。

句に関連付けられている一般的なステータスコード:

  • 200 OK:リクエストに成功
  • 301移動永久永久要求されたオブジェクトが新しいURLが応答メッセージの場所で定義され、転送された:応答ヘッダーに
  • 400不正な要求:要求がサーバによって理解されないことを示す一般的なエラーコード
  • 404が見つかりません:要求されたドキュメントは、サーバー上にありません
  • 505 HTTPバージョンはサポートされていません:サーバーは、要求メッセージで使用されるHTTPプロトコルのバージョンをサポートしていません。

クッキー技術

HTTPサーバのステータス情報は、ユーザーが保持されないステートレス、が、ユーザーを識別できることがしばしば望ましいWebサイトで、クッキーの技術を使用する必要があり、クッキーの技術は、4つのコンポーネントがあります。

  1. HTTP応答パケットにクッキーヘッダ行
  2. HTTP要求パケットにクッキーヘッダ行
  3. クライアントシステムでは、ユーザーのブラウザ管理のクッキーファイルを保持
  4. データベースのWebサイトにあります

ユーザーがブラウザのステータスを追跡することができますので、クッキーは、ユーザーに基づいてユーザに推奨されます...しかし、クッキーを使用すると、ユーザーのプライバシーの侵害である、あなたは、サイト上の多くの情報を収集して、第三者にこの情報を売ることができます。

実現IDEA上のクッキー

これらの手順を実行します。

  • Cookieオブジェクト、バインドデータを作成します。
    new Cookie(String name,String value)
  • Cookieオブジェクトを送信
    response.addCookie(Cookie cookie)
  • クッキーを取得し、データを取得します
    Cookie[] request.getCookies()

原理:応答に基づいて、およびSet-Cookieヘッダー要求ヘッダークッキー
クッキーの詳細:

  • クッキーはクッキーを送信するために複数の呼び出しaddCookie応答メソッドを使用し、複数のオブジェクトを送信することができます
  • あなたが永続ストレージを実現したい場合は、クッキーの有効期間は、デフォルトのブラウザは、クッキーのデータが破壊され、閉じられ、それが使用する必要があるsetMaxAge(int seconds)方法を、三つの異なる状況、正、負のゼロを持っているパラメータ秒。正の数は、削除クッキー情報にゼロ手段、クッキーデータはハードディスクファイル・ストレージ・seconds秒に書き込まれ、デフォルト値がマイナスであることを示し
  • クッキー共有:
    • あなたはクッキーの取得範囲を設定する必要があり、これらのプロジェクト間で共有クッキーにしたい場合は、Tomcatのプロジェクトで複数のWebサーバとの間で展開されsetPath(String path)、デフォルトに設定パスをすることができ、共有されるように、共有されていません「/」
    • 異なるTomcatサーバーの共有:setDomain(Sting path):あなたは、同一のドメイン名を設定した場合、クッキーは百度の一例として、複数のサーバ間で共有することができ、ドメイン名のBaiduのポストバーtieba.baidu.com、Baiduのニュースのドメイン名news.baidu.com、彼らはドメイン名を持っている:.baidu.com彼らはそうクッキーは間で共有することができます

テクニカルセッション

クッキーセッションと同様の技術ですが、セッションはサーバー側のセッション技術で、クッキーは、セッションを保存することができ、クライアントのセッション・テクノロジー、1つのセッションで複数の要求の間でデータを共有する機能、サーバ側オブジェクト(HttpSessionの)に格納されたデータであります任意のサイズの任意のタイプのデータ。
取得のHttpSessionオブジェクト:HttpSession session =request.getSession();
使用HttpSessionオブジェクト:のgetAttribute(文字列名)、のsetAttribute (文字列名、オブジェクト値)、removeAttribute(文字列名)。
セッション原理:セッションが達成さは、対応するヘッドと要求ヘッダーによって完成されるクッキーに依存しています。
セッションの詳細:

  • クライアントは、デフォルトではオフになった後、サーバは二回撮影した別のセッションをシャットダウンしません
    あなたが同じを取得したい場合は、生存時間を設定しますsetMaxAge(int seconds)
  • クライアントは、サーバーがダウンした後にセッションが同じではありません取得するには、シャットダウンしませんが、仕事で自動的にTomcat、失われないデータを確実にするために:
    • セッションパッシベーション:通常のサーバには、ハードディスク上のセッションオブジェクトのシリアル化を閉じるまで
    • セッションのアクティブ化:サーバーが開始された後、メモリ内のセッションオブジェクトにセッションファイル

違いのクッキーとセッション

  1. セッションデータはクッキークライアント、サーバ側に保存されています

  2. セッションデータなしサイズ制限、クッキーのデータサイズの制限

  3. 比較的危険なセッション・データ・セキュリティ、クッキー

おすすめ

転載: www.cnblogs.com/cubeblog/p/12558567.html