[英]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.