問題タブ [cookiecontainer]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
powershell - powershell httpwebrequest GET メソッド cookiecontainer の問題?
ユーザー認証のある Web サイトをスクレイピングしようとしています。POST を実行してログインを送信し、Cookie を保存できます。ただし、ログイン後、保護されたページにアクセスしようとすると 403 エラーが発生します。
回避策:ほとんどすべてを試した後、別のものを試してみたところ、実際に機能しました。
ログインを投稿してセッション cookie を取得したら、webclient を使用して、ヘッダーに cookie 文字列を追加することにより、安全なページにアクセスします。
これの優れた点の 1 つは、webclient が Cookie を保存することです。別の安全なページにアクセスするには、 $web.downloadstring("https://another_secure_url") を呼び出すだけです:)
c# - すべてのCookieがcookiecontainerを使用して保存されているわけではありません
VisualStudio2010と.NETFramework4.0を使用しています。
コード:
問題は、CookieContainerにすべてのCookieが含まれていないことです。Firefoxには5つのCookieがありますが、CookieContainerは3つしか取得しません。常にすべてのCookieにログインする必要があります。.domain.comのようなドメインには問題があると思います。助けて!
c# - なぜ1つのCookieが失われるのですか?
リダイレクトの結果であるページを廃棄しています。最初にpage1にアクセスしてから、を介してpage2にリダイレクトしhttp-equiv="refresh"
ます。page2を廃棄しています。page2のコンテンツは、いくつかのCookiepage1セットに基づいています。page1が2つのCookieを返すのがわかりますが、ページ2をリクエストすると(同じものを送信するとCookieContainer
、1つのCookieが失われます。コードの何が問題になっていますか?
ありがとうございました:
最初に:私はとを作成し、CookieContainer
page1HttpWebRequest
を要求します。
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(eQuery);
req.AllowAutoRedirect = true; // but it doesn't autoredirects the meta-refresh
req.CookieContainer = cookiesContainer;
これは、page1にアクセスして得た結果です。
HTTP/1.1 200 OK
Date: Tue, 12 Apr 2011 19:14:06 GMT
Server: (...)
Set-Cookie: NAME1=VALUE1; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Set-Cookie: NAME2=VALUE2; expires=Wed, 13-Apr-2011 19:14:06 GMT
Content-Length: 174
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html
(...)
これまでのところすべて問題ありません。2つのCookieがあり、コンテナ内に2つのCookieオブジェクトがあります。
meta http-equiv
次に、次のURLのの「コンテンツ」値を解析します。同様のコードを使用し、同じコンテナを使用してリクエストします。ただし、送信されるCookieは1つだけです。送信されるHTTPは次のとおりです。
GET DETECTED_URL_IN_HTTP_EQUIV_REFRESH HTTP/1.1
User-Agent: (...)
Host: example.com
Cookie: NAME1=VALUE1
ご覧のとおり、CookieNAME2がありません。なぜそれが起こっているのですか?2つのCookieに関連する違いはありますか(1つにはパスがあり、もう1つには有効期限があります)?どうすれば2つのCookieを渡すことができますか?
PS:page1にアクセスできないため、Cookieのパスや有効期限を設定できません。私はそれらのページを廃棄しています。
ありがとうございました。
php - vb.net ページから php バックエンドに Cookie を送信できません
クロスドメイン AJAX POST クエリ用のプロキシを作成しようとしています。そのためには、クライアント (ブラウザ) のリクエストからの Cookie を、PHP バックエンドに送信する POST リクエストに追加する必要があります。これはHttpWebRequestを使用しています。これを行うために、それぞれの Request.Cookie を HttpWebRequest.CookieContainer オブジェクトに追加しています。何らかの理由で、追加した Cookie が PHP バックエンドに到達することはありません。
いくつかの検索から、CookieContainer オブジェクトが URI に依存していることがわかりました (説明する方法さえわかりません!)。おそらくそれが問題の原因です。ただし、Cookie のドメインを別のものに設定しようとしましたが、影響はないようです。したがって、URI は Cookie の Domain パラメータとは異なる意味を持っている可能性があります。もしそうなら、私は立ち往生しています。
代替ソリューションが存在する場合、私はすべて賛成です(プラグインを必要とせずにasp.netで自動クロスドメインプロキシを実行する方法があれば、それは私の命を救います!)。
これが私が使用しているコードです。
c# - 応答でバージョンが指定されている場合のCookieContainerオブジェクトの予期しない動作Set-CookieC#.NET 2.0-4.0
live.comにログインするためのアプリケーションを作成しています。私はすでにWebBrowserコントロールを使用してこれを正常に実装しましたが、現在、ヘッドレスブラウザーを使用してこれを実行しようとしています。SimpleBrowserを使用するだけですが、JavaScriptのサポートが必要です。だから私はCookieをサポートするようにWebClientクラスを拡張することによってこれを行おうとしています。もともとはそれが私の問題だと思っていましたが、HttpWebRequestオブジェクトとHttpWebResponseオブジェクトを使用して簡単なテストケースを実行し、Cookieがどのように表示されるかを確認しました。同じ結果が得られました。
この問題は、live.comのSet-Cookie応答ヘッダーで渡された「version=1」が原因のようです。私のテストケースでは、twitter.comとlogin.live.comに対して同じコードを実行しました。
出力:
それぞれのURLの応答ヘッダーにある「Set-Cookie」値を見ると、これが表示されます(Fiddlerから取得)。
したがって、login.live.comはCookieの1つだけを取得し、バージョンとパスを別々に保存します。twitter.comリクエストは期待どおりに機能しています(重複したauth_tokenが送信される理由はわかりませんが、CookieContainerはそれを適切に処理します)。
これは予想される動作ですか?IE、Firefox、Chromeは「version = 1」を無視しているようです(Fiddlerでわかることから)。カスタムWebClientクラスのGetWebResponseメソッドをオーバーライドして、応答ヘッダーの「Set-Cookie」値から「version = 1」を削除することもできますが、欠落しているより明白な解決策があることを期待していました。「version=1」のせいではないかもしれませんが、2つのテストケース以外に目立った違いは見られません。
ありがとう、
アーロン・レイ
c# - CookieContainerの状態を保存するWindowsPhone7 Mango
update1:さらに調査した結果、これが可能かどうかはわかりませんが、修正時にUserVoiceエントリを作成しました。
アプリの終了時またはトゥームストーニングが発生したときにCookieContainerを保存しようとしていますが、いくつかの問題が発生しました。
AppSettingsにCookieContainerを保存しようとしましたが、読み込まれるとCookieが失われます。
さらに調査を行った後、回避策はコンテナからCookieを取得し、別の方法で保存することであるように思われました。私が別の障害にぶつかるまで、それはうまくいきました。.mydomain.comのURIでGetCookiesを取得できません。私はそれがこのバグのせいであると信じています。ドメインテーブルにCookie.mydomain.comが表示されますが、GetCookiesはその特定のCookieでは機能しません。
ドメインが。:で始まる場合、コンテナからCookieを取得することにも問題があります。
リフレクションを使用してドメインテーブルを反復処理し、「。」を削除することで回避策を見つけました。プレフィックス。
InvokeMemberが呼び出された場合のみ、SLでMethodAccessExceptionがスローされます。保存する必要のあるCookieの1つがHttpOnlyであるため、これは実際には私の問題を解決しません。これがCookieContainerの理由の1つです。
サーバーがHTTPOnlyCookieを送信する場合は、Cookieを保持する要求に対してSystem.Net.CookieContainerを作成する必要がありますが、コンテナーに格納されているCookieは表示されないか、アクセスできません。
それで、何かアイデアはありますか?私は何か簡単なものが欠けていますか?CookieContainerの状態を保存する別の方法はありますか、それともパスワードを含むユーザー情報を保存して、アプリが起動するたびに、そして墓石から戻ったときにユーザーを再認証する必要がありますか?
windows-phone-7.1 - Windows Phone 7(Mango)のHttpWebRequests間でCookieContainerを共有する際の問題
HttpWebRequestを介して2つの呼び出しを行う本番アプリがあります。最初の呼び出しはセッションを設定し、セッションを維持するためにCookieを受信します。2番目の呼び出しは、APIからのデータに対するものです。応答はhttponlyです。2つの呼び出し間で共有CookieContainerを使用していますが、2番目の呼び出しは常に失敗します。問題を2番目のリクエストで送信されないCookieに絞り込みました。ネットワークモニターを使用してトラフィックを監視しましたが、2番目のリクエストでCookieを明示的に設定すると(以下のコードを参照)、呼び出しは成功します。誰かがこの問題について何かアイデアがありますか?共有CookieContainerで動作させる方法を理解する必要があります。
}
.net - 「CookieContainer」はVisualStudio2008/2010 Webサービスのどこにありましたか?(WCFでのセッションCookieの永続性)
非常に単純な質問のように思えますが、こことWebで数時間調査した後、私はおそらく間違った質問をしている、または何か間違ったことをしていると思い始めています。
いずれにせよ、ログインに使用されるWebサービスがあります。成功すると、ヘッダーCookieが返され、このCookieを使用した他のサービスへの後続の呼び出しは認証済みと見なされます。これは最も安全またはベストプラクティスではないかもしれませんが、これは私が持っているサービスです
Javaでは、ログインに成功した応答からCookieを取得し、他の呼び出しに渡すだけです。
例(一部の呼び出しは非推奨であり、Axis 1は完全に非推奨ですが、想像力を働かせてください)
(ここからの元の例)
古い、正しくない、または安全でない(そうですか?)限り、.NETでも同じことをしたいと思います。
CookieContainerに関するコメントを見ましたが、私のサービス(VS Express 2010によって自動生成されたもの)にはそのようなプロパティがありません...
1つのサービス呼び出しからCookieを取得し、他のサービス呼び出しに渡すのと同等の方法は何ですか(ブラウザーが自動的に行うようにセッションの永続性をエミュレートするため)
(可能であれば、単純な「サービス参照の追加」自動生成されたWeb .NETサービスクライアントを引き続き使用したい)
c# - Cookie コンテナーが Set-Cookie 応答ヘッダーにバインドされていません
問題は、次のコードがあることです。
したがってresp.CookieContainer
、 とresp.Cookies
は空ですが、resp.Headers["set-cookie"]
対応する Cookie が含まれています。
resp.CookieContainer
上記の適切な Cookie を含める必要があると考えるのが間違っている場合は?
みんなありがとう!
アップデート
質問CookieContainer bug?に記載されている Cookie コンテナーのバグ修正コードも試しました。ただし、システムが使用する前に呼び出す必要があるため、有効な結果も得られませんが、CookieContainer
その時点では空です。
c# - CookieContainer.GetCookies(Uri uri) の ArgumentOutOfRangeException
特定のサイトの Cookie を取得しようとすると、この奇妙な例外が発生します。このCookieContainer
オブジェクトはシングルトン クラスのメンバーであるため、アプリケーション全体の各 HttpWebRrequest はサイトの認証 Cookie にアクセスできます。
完全なクラスはhttp://pastebin.com/QaDSs2g5で入手できます。
への最初の呼び出しは、次のスタック トレースをGetCookies
スローします。ArgumentOutOfRangeException
でこの例外を引き起こしているパラメータDateTime.Add
はです。value
これはnull
です。
しかし、2 番目の呼び出しは完全に機能し、必要な Cookie とその値を見つけることができます。したがって、私のコードは機能しますが、見苦しいと感じており、最初に失敗した理由について知りたいと思っています。アイデアはありますか?