【问题标题】:Ruby::Mechanize::cookie_jar红宝石::机械化::cookie_jar
【发布时间】:2012-04-28 23:32:09
【问题描述】:

我有一个网站执行四种不同的重定向,但似乎并不总是传递 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?

或者有更好的方法吗?

【问题讨论】:

    标签: ruby cookies mechanize mechanize-ruby


    【解决方案1】:

    我注意到过去某个版本的 mechanize 存在问题,当 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
    

    【讨论】:

      猜你喜欢
      • 2012-09-01
      • 2011-01-10
      • 2012-03-03
      • 1970-01-01
      • 1970-01-01
      • 2015-07-27
      • 1970-01-01
      • 2013-08-12
      • 1970-01-01
      相关资源
      最近更新 更多