javaにおけるServlet Cookieの値が取れない原因解決方法
javaにおけるServlet Cookieの値が取れない原因解決方法
現象:
Cookieを持つHTTP要求をテストする時、サービス端末はrequest.getHeader(「cookie」)で値に行くことができます。でもrequest.get Cookiesではだめです。
理由:
ブラウザの具体的なクッキー値を調べたら、発見されました。
http://localhost:8080/ アクセス時には、cookie値がlocal hostの下に置かれ、サーバーが自動的に生成したSESSIONIDもlocal hostのパスの下に保存されています。
http://127.0.0.1:8080/アクセス時、cookie uid値は127.1.0.1:8080において、127.1.0.1:8080のcookieサービス端末のServletを永遠に獲得できません。サーバーが自動的に生成するSESSIONIDは127..0.1で、uidの保管位置とは異なる。
ですから、サービスの下でクッキーを送る時、
もちろん、サーバーにドメイン名があります。ポート番号でクッキーの値が取れないことはありません。
解決策:
読んでくれてありがとうございます。みなさんのご協力をお願いします。ありがとうございます。
現象:
Cookieを持つHTTP要求をテストする時、サービス端末はrequest.getHeader(「cookie」)で値に行くことができます。でもrequest.get Cookiesではだめです。
Cookie mycookies[] = request.getCookies();
ではいつまでもuidの値を取得できません。80ポート番号を除く)理由:
ブラウザの具体的なクッキー値を調べたら、発見されました。
http://localhost:8080/ アクセス時には、cookie値がlocal hostの下に置かれ、サーバーが自動的に生成したSESSIONIDもlocal hostのパスの下に保存されています。
http://127.0.0.1:8080/アクセス時、cookie uid値は127.1.0.1:8080において、127.1.0.1:8080のcookieサービス端末のServletを永遠に獲得できません。サーバーが自動的に生成するSESSIONIDは127..0.1で、uidの保管位置とは異なる。
ですから、サービスの下でクッキーを送る時、
String host=request.getHeader("host");
に変更する必要があります
if(host.indexOf(":")>-1){
host=host.split(":")[0];
}
または設定を破棄する
mycookie.setDomain(host);
このようにcookie値も127..0.1に保存されています。ポート番号とは関連がありません。もちろん、サーバーにドメイン名があります。ポート番号でクッキーの値が取れないことはありません。
解決策:
String cookie=request.getHeader("cookie");
Cookie mycookies[] = request.getCookies();
前の行の後ろを加えると取れます。読んでくれてありがとうございます。みなさんのご協力をお願いします。ありがとうございます。