【发布时间】:2011-06-01 19:40:13
【问题描述】:
我看到了一些奇怪的行为,它是 cookiejar。在 irb 中:
>> require 'curl'
=> true
>> a = Curl::Easy.new
=> #<Curl::Easy>
>> a.enable_cookies = true
=> true
>> a.cookiejar = "cookies.txt"
=> "cookies.txt"
>> a.url = "http://www.amazon.com"
=> "http://www.amazon.com"
>> a.perform
=> true
在这里,我想通过某种方式检索 amazon.com 放置的 cookie,但我无法这样做。我指定为我的 cookiejar 的 cookies.txt 文件不存在,#cookies 方法只返回 nil。但是,如果我退出 irb,cookies.txt 文件就会出现,其中包含正确的 cookie。有什么建议吗?
谢谢
【问题讨论】:
-
在稍微挖掘了遏制的来源之后,我了解到 Curl::Easy#cookiejar= 方法正在设置提到的 CURLOPT_COOKIJAR 选项here,并且根据文档,cookie在调用 'curl_easy_cleanup(3)' 之前不应该将其写入该文件(这必须在您关闭 irb 时发生,而且我也倾向于在您调用 Curl::Easy#close 时发生)。我仍然无法弄清楚如何在关闭 irb/Curl::Easy 实例之前访问 cookie....
-
cookies 保存在句柄中,因此如果您使用相同的句柄进行另一个请求,cookie 将被相应地使用
-
我知道这一点,但我正在使用遏制来编写一些测试,这些测试需要我检查某些 cookie 是否设置正确。因此,我有兴趣查看 cookie jar 中的内容,而不是使用 cookie jar 来发出后续请求。有任何想法吗?谢谢。