我想存储来自一个 open-uri 调用的 cookie,并将它们传递给下一个。我似乎找不到合适的文档来执行此操作。如果您能告诉我正确的方法,我将不胜感激。
注意:w3.org 不是实际的 url,但它更短;假装 cookies 在这里很重要。
h1 = open("http://www.w3.org/")
h2 = open("http://www.w3.org/People/Berners-Lee/", "Cookie" => h1.FixThisSpot)
两次反对后更新:虽然这不是反问句,但我保证这是可能的。 风滚草后更新:看到(答案),这是可能的。我花了很长时间,但它有效。
最佳答案
我以为有人会知道,但我猜这不是用 open-uri
完成的。
这是丑陋的版本,既不检查隐私、过期时间、正确的域,也不检查正确的路径:
h1 = open("http://www.w3.org/")
h2 = open("http://www.w3.org/People/Berners-Lee/",
"Cookie" => h1.meta['set-cookie'].split('; ',2)[0])
是的,它有效。不,它不漂亮,也不完全符合建议,也不处理多个 cookie(按原样)。
显然,HTTP 是一种非常直接的协议(protocol),open-uri
最多可以让您使用它。我想我真正需要知道的是如何从 h1
请求中获取 cookie,以便它可以传递给 h2
请求(那部分我已经知道并展示了).令人惊讶的是,有多少人基本上都想通过告诉我不要使用 open-uri
来回答,而其中只有一个人展示了如何在传递给下一个请求的一个请求中获取 cookie 集。
关于Ruby 的 open-uri 和 cookies,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1360808/