私はサイトをクロールするために使用HttpWebRequest
しています。HttpWebResponse
リクエストごとに同じものを使用しておりCookieContainer
、Cookieが自動的に処理されるようにしています。
ただし、リクエストの1つには、前のレスポンスで設定された特定のCookieが必要です。これはコレクションに存在しますが、そのPath
プロパティは正しくないように見えます。RFC2109 (ページ7)によると、Cookieが空白のパスで設定されている場合(このように)、パスはリクエストのURLに設定する必要がありますが、最後のスラッシュは含まれません。実際に起こっていることは、URLパス全体に設定されていることです。つまり、同じサブドメイン内の別のURLでCookieを後で読み取ることはできません。
例:
- http://www.myserver.com/sub/mypage.phpでページをリクエストします
- 応答には、mycookie=12345
Set-Cookie
を読み取るヘッダーが含まれています。有効期限=2012年6月27日水曜日16:20:00GMT - Cookieが.NETCookieCollectionに追加されます。パスが設定されていないため、パスが/sub/mypage.phpに誤って初期化されています
- 同じサブドメインの下に別のページをリクエストしましたが、これにはmycookie cookieが必要です(例:http ://www.myserver.com/sub/anotherpage.php)。
- パスが完全に一致しないため、Cookieは.NETによって提供されません。パスが/subの場合、正しく提供されているはずです
FirebugおよびFirecookie拡張機能を備えたFirefoxブラウザを使用して同じナビゲーション手順を実行しました。パスは、実際のブラウザセッションで正しく設定されています。つまり、サブドメインに設定されています。
誰かがこれを確認し、おそらくこの問題の回避策または修正を指摘できますか?どうもありがとう。