JavaでServlet Cookieが値を取得できない問題の解決方法

怪我咯
リリース: 2017-06-30 10:39:18
オリジナル
2038 人が閲覧しました

この記事では、Java で Servlet Cookie が値を取得できない理由の解決策に関する関連情報を主に紹介します。必要な方は、

Java の Servlet Cookie が値を取得できない理由の解決策を参照してください。値

現象: Cookie を使用した HTTP リクエストをテストすると、サーバーは request.getHead

er("cookie") を使用して値を取得できるが、request.getCookies() を使用して値を取得できないことがわかりました。

 Cookie mycookies[] = request.getCookies();
ログイン後にコピー
常に uid の値より小さい値を取得します (ポート 80 を除く)

原因:

ブラウザの特定の Cookie 値を確認したところ、


http://localhost:8080/

が見つかりました

アクセスすると、Cookie の値が localhost の下に配置され、サーバーによって自動的に生成された SESSIONID も localhost パスの下に保存されます。
http://127.0.0.1:8080/

にアクセスすると、Cookie uid 値は 127.0.0.1:8080 の下に配置され、127.0.0.1:8080 の下の Cookie サーバー サーブレットと SESSIONID は取得できません。サーバーによって自動生成されるファイルは 127.0.0.1 未満であり、uid の保存場所とは異なります。

そのため、サーバーが Cookie を送信するとき、

String host=request.getHeader("host");
ログイン後にコピー

if(host.indexOf(":")>-1){
  host=host.split(":")[0];
  }
ログイン後にコピー

に変更するか、設定を放棄する必要があります

mycookie.setDomain(host);
ログイン後にコピー

この方法では、Cookie の値も 127.0.0.1 で保存され、ポート番号とは関係ありません

もちろん、それはサーバーです。すでにドメイン名を持っている場合は、ポート番号で Cookie 値を取得できないという問題はありません。

解決策:

String cookie=request.getHeader("cookie");

Cookie mycookies[] = request.getCookies();
ログイン後にコピー
それを取得するには、前の行を追加します。

以上がJavaでServlet Cookieが値を取得できない問題の解決方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート