关于cookie的问题

时间:2009-12-26 23:28:57

标签: cookies

我陷入了与cookie相关的问题。我想编写一个程序,可以自动下载this论坛的附件。所以我应该维护这个网站发给我的cookies。当我在我的程序中向the login page发送GET请求时,我得到了诸如 Set-Cookie:sso_sid = 0589a967之类的cookie; domain = .it168.com 在我的程序中。现在,如果我使用cookie monster之类的cookie查看器并发送相同的GET请求,我的程序会得到相同的结果,但cookie查看器显示该网站还向我发送了两个cookie: testcookie http://get2know.it/myimages/2009-12-27_072438.jpgtoken http://get2know.it/myimages/2009-12-27_072442.jpg

我的问题是:这两个cookie来自哪里?为什么他们没有在我的课程中展示? 感谢。

1 个答案:

答案 0 :(得分:2)

最好的办法是找出像这样的屏幕抓取问题,使用Fiddler。使用Fiddler,您可以准确地比较应用程序中的内容与从浏览器访问站点时的内容。我怀疑你会发现你的应用程序发送的标题与浏览器发送的标题之间存在一些差异 - 这可能会说明你所看到的差异。

接下来,您可以执行以下两项操作之一:

  1. 更改您的应用程序以准确发送浏览器所执行的标题(如果您这样做,您应该获得真实浏览器获得的响应)。
  2. 使用Fiddler的“请求构建器”功能,开始逐个删除标题并重新发出请求。在某些时候,您将删除一个标题,使得响应与您正在寻找的响应不匹配。这意味着标题是必需的。继续执行所有其他标头,直到您拥有网站所需的标头列表以产生所需的响应。
  3. 就个人而言,我喜欢选项#2,因为它需要最少量的标题设置代码,尽管最初要弄清楚网站需要哪些标题更难。

    关于你为什么看到2个cookie的实际问题,只有上面的诊断会告诉你,但我怀疑它可能与某些网站用来检测不接受cookie的客户的机制有关。在会话中的第一个请求中,许多站点将“探测”客户端以查看客户端是否接受cookie。通常他们会这样做:

    • 如果请求中没有cookie,则网站会将客户端重定向到特殊的“cookie设置”URL。
    • 重定向响应除了具有执行重定向的Location:标头外,还将返回Set-Cookie标头以设置cookie。重定向通常包含原始URL作为查询字符串参数。
    • “cookie setter”页面的服务器端处理程序将查看传入的cookie。如果它是空白的,这意味着用户的浏览器设置为不接受cookie,并且该站点通常会将用户重定向到“抱歉,您必须使用cookie来使用此站点”页面。
    • 但是,如果有一个cookie标头发送到“cookie setter”URL,那么客户端确实接受cookie,并且处理程序将简单地将客户端重定向回原始URL。
    • 原始网址,一旦您转到下一页,可能会添加额外的Cookie(例如,用于登录令牌)。

    无论如何,这是你最终得到两个cookie的一种方式。但是,只有使用Fiddler(或类似工具)进行诊断才能确定。

相关问题