我有一个网站可以执行四种不同的重定向,并且似乎并不总是传递cookie。
所以我在这里研究并尝试了一些解决方案,如:
创建临时cookie_jar并每次分配。 我还试图像这样手动传递cookie:
cookie = Mechanize::Cookie.new("TLSID",bot.cookie_jar.jar['.manageyourloans.com']
["/"]["TLSID"].value)
cookie.domain = ".manageyourloans.com"
cookie.path = "/"
bot.cookie_jar.add(bot.history.last.uri,cookie)
cookie = Mechanize::Cookie.new("TLHID",bot.cookie_jar.jar['.manageyourloans.com']
["/"]["TLHID"].value)
cookie.domain = ".manageyourloans.com"
cookie.path = "/"
bot.cookie_jar.add(bot.history.last.uri,cookie)
上述问题是,如果不需要传递,我会收到错误 是否可以执行以下操作。有10-12个不同的cookie值似乎已经通过,有些包含每个页面(重定向)或只有少数几个。如何执行上述操作并手动传递cookie,但如果该值不存在则只传递null?
或者有更好的方法吗?
答案 0 :(得分:0)
我注意到过去使用某个版本的机械化时出现问题,当Cookie域看起来像:.domain.com并且请求是针对domain.com时,cookie就不会被设置。
这可能不是处理它的最好方法,但我当时的解决方案是使用补丁机制来剥离cookie的域名部分:
class Mechanize::Cookie
class << self; alias_method :old_parse, :parse end
def self.parse(uri, str, log = Mechanize.log, &block)
str.gsub!(/domain[^;]*;/,'')
old_parse(uri, str, log, &block)
end
end