2011-04-12 62 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