- - PR -
『HttpClient』におけるCookieに関する質問
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-11-22 01:00
プログラム上から、(ログイン後にサーバから送信される)Cookieを利用することによって『Cookie認証が必要となるページ』にアクセスするプログラムを作成しています。
下記のサイト(※)を参考にプログラムを作成・実行したのですが、(Cookieは きちんと送信されているにも関わらず)認証されません。 ここで質問です。 「下記のプログラムをどのように修正すれば、送信されているCookieが有効に働く(=認証される)のでしょうか?」 (他に原因があるかもしれませんが、一応、一時的にですが『認証後ページのHost』と 接続できているのでCookie認証の箇所が原因ではないかと…) それではご回答の方、よろしくお願い致します。 ◆java :1.5.0_05 ◆HttpClient:3.0-rc4 ※『HttpClientでのCookieの扱い(HttpClient3.0-rc3) 』 http://www.h7.dion.ne.jp/~matsu/feature/uzumi/httpclient/cookie.html 『HttpClient 3.0-rc4 API』 http://jakarta.apache.org/commons/httpclient/apidocs/overview-summary.html ***[テストプログラム]********************************************************** ・ ・ HttpClient client = new HttpClient(); String target = "ログインページで作成され、GET送信されるURL"; GetMethod gMethod = new GetMethod (target); // Httpメソッドパラメータを設定. gMethod.setRequestHeader("Connection", "keep-alive"); // Cookieポリシーの設定 gMethod.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY); // CookiePolicy.BROWSER_COMPATIBILITY:主要なCookieマネージメントとの高い互換性を維持するモード. try { // Httpメソッド実行 int statusCode = client.executeMethod(gMethod); ・ ・ ***[キャプチャしたHTTPの一部]************************************************** GET / HTTP/1.0 Connection: keep-alive User-Agent: Jakarta Commons-HttpClient/3.0-rc4 Host: charge.quote.yahoo.co.jp ← 認証後ページのHost Cookie: 〜 Cookie: 〜 Cookie: 〜 Cookie: 〜 このあとサーバからは、(認証されなかったことを表す)認証前のページの Host(quote.yahoo.co.jp)のレスポンスが返されてしまいます。 ******************************************************************************* | ||||
|
投稿日時: 2005-11-23 00:55
こんばんは。
HttpClientは使用したことがないので、詳細は分かりませんが、提示された プログラムを見る限り、ログイン認証処理が行われていないように読み取れました。 ログイン後のページへアクセスする為には 1.ログインページのURLへ認証情報を含んだ形でリクエスト発行 2.レスポンスから認証クッキーを取得 3.アクセスしたいページへ2.で取得したクッキーをセットしてリクエスト発行 という流れを取る必要があるはずです。 この流に沿っているか確認してみてください。 | ||||
|
投稿日時: 2005-11-23 01:05
tcpmonなどを使って、実際のブラウザの送信するリクエストとの違いを比べてみてはいかがでしょうか。
http://ws.apache.org/axis/java/user-guide.html#AppendixUsingTheAxisTCPMonitorTcpmon | ||||
|
投稿日時: 2005-11-23 01:27
ご回答ありがとうございます。私はEthrealを使用しているのですが、特にtcpmonと大きな違いはないですよね? tcpmonの方に、より優れている点などがあるならばそちらを利用しますが…。 『Etherealを使おう』 http://www.space-peace.com/ethereal/ethereal.htm | ||||
|
投稿日時: 2005-11-23 01:41
Ethereal はTCPレベルのパケット主体で確認するツールですが、tcpmon はデータレベルで確認するツールです。
FIN / ACK といったパケットのフローを確認することは出来ませんがHTTPの要求・応答そのものを確認できますので読みやすいです。 パケットキャプチャではなくプロキシやリバースプロキシとして働くので localhost に対するリクエストものぞき見ることが出来るのが一番良いところだと思います。 パケットキャプチャツールとしては、Windowsをお使いであれば Packetyzer をお勧めします。 http://www.networkchemistry.com/products/packetyzer.php こちらは Ethereal のラッパみたいなものですが、tcpmon みたいにデータレベルで確認することができます。 やはり localhost のやりとりはキャプチャできませんが。 |
1