【问题标题】:Cookie policy in htmlunithtmlunit 中的 Cookie 政策
【发布时间】:2011-06-08 13:57:25
【问题描述】:

如何在 htmlunit 中指定一个 cookie 策略来接受所有的 cookie?

【问题讨论】:

  • @Mat Banik,我发布了一些答案,但不是很好。
  • 我发现与其调整 cookie 策略,不如看看为什么 cookie 被拒绝 - 并修复。

标签: java cookies htmlunit


【解决方案1】:

只需重新创建整个 CookieManager 类: 这是课程的来源:http://jarvana.com/jarvana/view/net/sourceforge/htmlunit/htmlunit/2.8/htmlunit-2.8-sources.jar!/com/gargoylesoftware/htmlunit/CookieManager.java?format=ok

现在查找这个方法public synchronized Set<Cookie> getCookies(final URL url) 在那里你会发现这个:

   public static final String HTMLUNIT_COOKIE_POLICY = CookiePolicy.BROWSER_COMPATIBILITY; //default
   final CookieSpec spec = registry_.getCookieSpec(HTMLUNIT_COOKIE_POLICY);

   for (final org.apache.http.cookie.Cookie cookie : all) {
        if (spec.match(cookie, cookieOrigin)) {
            matches.add(cookie);
        }
    }

远程规格匹配声明if (spec.match(cookie, cookieOrigin))您应该接受所有cookie,无论政策如何。和/或您可以处理 ACCEPT_ALL_COOKIES 标志并通过匹配的规范(如果这是配置中指示的策略)。

【讨论】:

    【解决方案2】:

    一些修改源代码的解决方案。

    1. 您可以简单地从 httpClient 中的 org.apache.http.client.protocol.ResponseProcessCookies 中删除 cookieSpec.validate(cookie, cookieOrigin);

    2. 在 htmlUnit 中,您可以创建自己的策略并在 com.gargoylesoftware.htmlunit.CookieManager 中使用它而不是

        public static final String HTMLUNIT_COOKIE_POLICY = CookiePolicy.BROWSER_COMPATIBILITY;
        ...
        final CookieSpec spec = registry_.getCookieSpec(HTMLUNIT_COOKIE_POLICY);
      

      它应该取决于 CookieManager 的构造函数参数,但作者不这么认为)

       /**
        * HtmlUnit's cookie policy is to be browser-compatible. Code which requires access to
        * HtmlUnit's cookie policy should use this constant, rather than making assumptions and using
        * one of the HttpClient {@link CookiePolicy} constants directly.
        */
      

      因此,如果您想实现自己的 Cookie 策略或处理 CookiePolicy.BROWSER_COMPATIBILITY 不是浏览器功能的情况,您应该修改代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-25
      • 2013-09-27
      • 1970-01-01
      • 2010-12-14
      • 1970-01-01
      相关资源
      最近更新 更多