1

リダイレクトの結果であるページを廃棄しています。最初にpage1にアクセスしてから、を介してpage2にリダイレクトしhttp-equiv="refresh"ます。page2を廃棄しています。page2のコンテンツは、いくつかのCookiepage1セットに基づいています。page1が2つのCookieを返すのがわかりますが、ページ2をリクエストすると(同じものを送信するとCookieContainer、1つのCookieが失われます。コードの何が問題になっていますか?

ありがとうございました:

最初に:私はとを作成し、CookieContainerpage1HttpWebRequestを要求します。

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のパスや有効期限を設定できません。私はそれらのページを廃棄しています。

ありがとうございました。

4

1 に答える 1

2

Cookie でパスを指定しない場合、デフォルトで要求されたパスになります。したがって、このリクエストでパス宣言のない Cookie を受け取った場合は、次のようになります。

http://contoso.com/subfolder/test.aspx

/subfolder/ブラウザは、ディレクトリ内の追加のリクエストに対してのみその Cookie を送り返します。path=/Cookie を設定するときに含める必要があるすべてのパスに対してブラウザに送信させるには。

于 2011-04-12T20:24:39.800 に答える