すべてのCookieがCookieContainerとwebclient/httpwebrequestを使用して保存されているわけではありません

StackOverflow https://stackoverflow.com/questions/4734132

質問

私はcookieawareclientを使用してサイトにログインしようとしています(こちらのコード: C#WebClient Webサイトにログオンします)。 Webブラウザを使用してサイトにログインすると、約10個のCookieが入ります。 JavaScriptを無効にしてログインしようとすると、5(ActiveTab、ID、MCIM、PHPSESSID、ユーザー名)を取得します。しかし、Cookieawareclientを使用してログインしようとすると、保存する唯一のCookieはphpsessidです。

他のクッキーが保存されていない理由は何ですか? WebClientはJavaScriptを実行しませんが、JavaScriptが無効になっているときに生成される他の3つのCookieも保存されていません。

役に立ちましたか?

解決

まず、明らかな質問:ブラウザのスクリプトをオフにしてログインしようとする前に、最初にクッキーをクリアしましたか?そうでない場合は、Cookieをクリアして再試行してください。

最初にクリアをクリアしたが、スクリプトなしのログイン後に5つの新しいCookieを手に入れたと仮定すると、欠落しているCookie名を見ることで、Cookieawareclientが実際にユーザーに正常にログインしていないと思います。 「ユーザー名」のクッキーの欠如は、ログインが成功しなかった場合に期待するものです。ログイン要求によって返されるHTMLを見ると、ログインが成功したように見えますか?それとも、何らかのエラーを返しますか?

HTMLがログインに成功した場合、私が見る次の可能な犯人は、ブラウザによって実行されるが、コードによって実行されない追加の要求になります。たとえば、ログインページには、別のページにリダイレクトされたメタリフレッシュ(Cookieを設定します)があります。または、ログインページにはを含めることができます IFRAME, IMG, SCRIPT, など、クッキーを設定します。これを診断するには、Fiddler、FireBug、またはその他の同様のツールを使用して、ログインプロセスの一部としてブラウザによって特定のHTTP要求が実行されているものを確認します。ログインページへの投稿がすべてのCookieセッティングを行っていることを確認してください。そうでない場合は、最初のログイン後にコードに追加のリクエストを追加する必要があります。

HTTPリクエストの設定Cookieが1つしかないことが判明した場合、問題は、コードがサーバーに送信している(または送信しない)HTTPヘッダーまたは投稿データになることです。ブラウザは、異なるヘッダーまたは投稿データを送信する可能性があります。これを診断するには、FireBug、Fiddler、または同様のツールも必要です。HTTPヘッダーを比較し、ブラウザが送信しているデータを投稿します。

これらの提案が機能しない場合は、コメントを投稿すると、反復できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top