2011-04-12 65 views
1

我要刪除一個頁面,這是重定向的結果:我先訪問page1,然後通過http-equiv="refresh"重定向到page2。我正在刪除page2。第2頁上的內容基於一些cookie page1集。我看到第一頁的回報2塊餅乾,但是當我請求第2頁(發送相同CookieContainer,一個cookie被遺漏了什麼問題在我的代碼爲什麼錯過了一個cookie?

謝謝:?

首先: 我創建了一個CookieContainerHttpWebRequest並要求第1頁。

HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(eQuery);
req.AllowAutoRedirect = true; // but it doesn't autoredirects the meta-refresh
req.CookieContainer = cookiesContainer;

這是結果我得到這個從訪問第1頁

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
(...)

一切都很好,到目前爲止,我得到兩個餅乾在那裏,我得到的容器內的兩個Cookie對象。

然後我解析下一個url的meta http-equiv的「內容」值。並使用相似的代碼並使用相同的容器來請求它。但只有一個cookie被髮送。這裏發送的HTTP:

GET DETECTED_URL_IN_HTTP_EQUIV_REFRESH HTTP/1.1
User-Agent: (...)
Host: example.com
Cookie: NAME1=VALUE1

正如你所看到的cookie NAME2丟失。爲什麼會發生?是兩個cookie中的相關差異(一個有路徑,另一個有過期日期)? 任何想法如何通過這兩個餅乾?

PS:我無權訪問page1,所以我無法設置Cookie的路徑或過期時間。我正在刪除這些頁面。

謝謝。

回答

2

如果您沒有在您的cookie上指定路徑,它將默認爲它被請求的路徑。所以,如果你不帶路徑聲明此請求收到cookie:

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

瀏覽器將只發回的cookie在/subfolder/目錄更多的請求。要讓瀏覽器將其發送回所有路徑,您在設置Cookie時需要包括path=/

+0

謝謝,但是我沒有權限在cookie中包含'path = /',因爲我正在刪除一個我無權訪問的服務器。我會看看我能做些什麼。不管怎樣,謝謝你。 – edteke 2011-04-12 20:57:55