I.はじめに
この記事の輪郭
- HTTPクッキーを読みます
- セットHTTPクッキー
- ] [すべてのCookieを読みます
- クッキーの有効期限を設定します
- HTTPS与クッキー
- HttpOnlyのクッキー
- クッキーを削除します
(とも呼ばれるHTTPクッキークッキーウェブ、ブラウザのクッキーは)サーバーのユーザーのブラウザに保存されたデータのごく一部です。サーバー側のアプリケーションがクッキーを設定し、ブラウザがバックブラウザ要求応答時間、それらは自動的にサーバ側のアプリケーションへの要求とともに送信されている次の時間にクッキーを格納します。
クッキーは、サイト全体でユーザー設定(テーマ、受け入れプライバシーポリシー)とトラックのユーザーの行動を覚えておくことは、サーバーとのセッションを管理するためのブラウザ(ログイン、ショッピングカート、ゲームのスコア)との間で情報を交換する方法を提供します。クッキーある程度、サーバ側の圧力の解放、データの一部がブラウザに保存されているので、データのこの部分は、データセキュリティのアプリケーションに関与することができないからです。この記事では、我々は春ブートアプリケーション、設定を読み込み、およびHTTPクッキーを削除する方法を学びます。
第二に、HTTPクッキーを読みます
スプリング・フレームワークが提供する@CookieValue
HTTPクッキーの値を取得するために注釈を、このアノテーションは、メソッドパラメータのコントローラに直接使用することができます。
@GetMapping("/")
public String readCookie(@CookieValue(value = "username",
defaultValue = "Atta") String username) {
return "Hey! My username is " + username;
}
上記のコードセグメントでは、注意してくださいdefaultValue = "Atta"
。ユーザー名のデフォルト値を設定しないと、クッキーの名前が見つからなかった場合は、春がスローされますjava.lang.IllegalStateException
例外を。
第三に、HTTPクッキーを設定します
春ブーツでクッキーを設定するには、我々が使用することができますHttpServletResponse
クラスのメソッドをaddCookie()
。新しい作成されて行う必要があるCookie
オブジェクトを、レスポンスに追加します。
@GetMapping("/change-username")
public String setCookie(HttpServletResponse response) {
// 创建一个 cookie对象
Cookie cookie = new Cookie("username", "Jovan");
//将cookie对象加入response响应
response.addCookie(cookie);
return "Username is changed!";
}
第四に、] [すべてのCookieを読みます
使用に加えて@CookieValue
、注釈を、我々はまた、使用することができHttpServletRequest
、すべてのクッキーを読み取るために、メソッドのパラメータコントローラとしてクラスを。このクラスは提供するgetCookies()
配列としてブラウザによって送信されたすべてのクッキーを返すメソッドを、。
@GetMapping("/all-cookies")
public String readAllCookies(HttpServletRequest request) {
Cookie[] cookies = request.getCookies();
if (cookies != null) {
return Arrays.stream(cookies)
.map(c -> c.getName() + "=" + c.getValue())
.collect(Collectors.joining(", "));
}
return "No cookies";
}
第五に、クッキーの有効期限を設定します
クッキーの有効期限を指定しない場合、セッションが期限切れになるまで、そのライフサイクルは継続されます。このようなクッキーが呼び出されるセッションクッキー。ユーザーがブラウザを閉じるか、そのクッキーをクリアするまでセッションクッキーはアクティブのまま。しかし、あなたは、このデフォルトの動作をオーバーライドしたクラスを使用することができますsetMaxAge()
クッキーの有効期限を設定する方法を。
// 创建一个 cookie对象
Cookie cookie = new Cookie("username", "Jovan");
cookie.setMaxAge(7 * 24 * 60 * 60); // 7天过期
//将cookie对象加入response响应
response.addCookie(cookie);
さて、username
クッキーの有効期限が切れSeesionを終了しませんが、次の7日間有効のままになります。渡されたsetMaxAge()
秒単位の方法の有効期限。有効期限の日付と時刻は、クライアント・サーバの観点ではなく、クッキーを設定して相対的です。
六、HTTPSとクッキー
私たちは、概念を理解する必要があります。クッキーのセキュリティとは何ですか?セキュリティクッキーのみを暗号化されたHTTPS経由で接続することができますクッキーサーバに送信されます。クッキー暗号化されていないHTTPを送信するためにサーバーに接続できません。あなたはsetSecure(true)を設定した場合、つまり、クッキーは、HTTP接続、HTTPSのみ接続伝送を送信されません。
// 创建一个 cookie对象
Cookie cookie = new Cookie("username", "Jovan");
cookie.setSecure(true); //Https 安全cookie
//将cookie对象加入response响应
response.addCookie(cookie);
七、HTTPのみクッキー
HttpOnlyのクッキーは、クロスサイトスクリプティング(XSS)攻撃を防ぐために使用され、そのは、HTTPのみクッキーは、JavaScriptのすることはできません設定されているDocument.cookie
サービスにアクセスするためにサーバによってのみ最後に、APIへのアクセス。
// 创建一个 cookie对象
Cookie cookie = new Cookie("username", "Jovan");
cookie.setHttpOnly(true); //不能被js访问的Cookie
//将cookie对象加入response响应
response.addCookie(cookie);
八、クッキーを削除
クッキーを削除するには、する必要がMax-Age
0に設定し、クッキーの値はnullです。しないでくださいMax-Age
に値をコマンド-1
負の数。そうでなければ、ブラウザはセッションクッキーとして扱います。
// 将Cookie的值设置为null
Cookie cookie = new Cookie("username", null);
//将`Max-Age`设置为0
cookie.setMaxAge(0);
response.addCookie(cookie);
あなたの注意を楽しみにして
- ブロガーは最近、本を書いた:「手のタッチ手をSpringBootシリーズ章97節を学ぶためにあなたを教えるために-16」
- :この記事は、ソース(エンはテキストのみをオンにしてはいけません)を示して再現された文字ジボオフ。