簡體   English   中英

HtmlUnit CookieManager不通過第一個請求發送cookie

[英]HtmlUnit CookieManager not sending cookies with the first request

我正在嘗試使用HtmlUnit 2.15模擬一個場景,其中cookie將被保存在上一個會話中,並且在新會話中請求頁面時應將其發送到服務器。 這是該代碼...

    String url = "http://localhost:55545/";
    String domain = "localhost:55545";

    java.util.logging.Logger.getLogger("com.gargoylesoftware.htmlunit").setLevel(Level.OFF);

    WebClient webClient = new WebClient(BrowserVersion.FIREFOX_24);
    CookieManager cookieManager = webClient.getCookieManager();
    cookieManager.setCookiesEnabled(true);

    Calendar cal = Calendar.getInstance();
    cal.add(Calendar.HOUR, 1);
    Cookie cookie = new Cookie(domain, "cName", "cValue", "/", cal.getTime(), false);

    cookieManager.addCookie(cookie);
    webClient.setCookieManager(cookieManager);

    HtmlPage page = null;
    try {
        page = webClient.getPage(url);
    } catch (FailingHttpStatusCodeException e) {
        System.err.print(e.toString());
        return;
    } catch (MalformedURLException e) {
        System.err.print(e.toString());
        return;
    } catch (IOException e) {
        System.err.print(e.toString());
        return;
    }

預期的行為是我應該在服務器上收到cookie“ cName”,但是在那里沒有收到cookie。 同樣通過代理(提琴手)驗證請求,我發現在第一個請求時,webclient沒有發送Cookie頭。

有人經歷過這個嗎? 希望在我調試HtmlUnit庫之前獲得一些建議。

根據https://code.google.com/p/browsersec/wiki/Part2#Same-origin_policy_for_cookies ,在限制Cookie范圍的同時,不考慮域(主機名)中的端口。 從域中刪除端口可以解決問題。

使用此答案 (基本上是自己構建WebRequest ,手動添加Cookies,然后將其傳遞給WebClient ),因為可能是您的設置(例如,將Spring Test / WebMVC與HtmlUnit一起使用)不會將cookie從一個請求傳遞給下一個。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM