登录后,HTMLUnit不会读取除JESSIONID之外的任何cookie

时间:2014-02-14 14:17:58

标签: cookies htmlunit missing-cookies

我的应用程序在成功登录后向响应中添加了一个cookie“XYZ”。此cookie确定应用程序登录后的特定行为。

我使用shiro FormAuthenticationFilter,这就是添加cookie的方式。

@Override
public boolean onLoginSuccess(AuthenticationToken token, Subject subject, ServletRequest     
   request, ServletResponse response) throws Exception {
       Cookie cookie = new Cookie('XYZ', '123');
       cookie.setPath("/");
       cookie.setMaxAge(-1);
       response.addCookie(cookie);
}

使用HTMLUnit断言此行为的功能测试失败,因为此cookie未正确设置。当我在Chrome中使用该应用程序时,它完全正常。调试HTMLUnit测试证明,在成功登录以下方法后,

driver.manage.getCookies() 

仅返回JESSIONID cookie,而不返回应用程序设置的附加cookie“XYZ”。

注意:如果我在登录后的任何页面上设置此cookie,htmlunit会选择它。

请问?

1 个答案:

答案 0 :(得分:0)

很难猜测为什么某些内容可以在除登录后之外的任何页面上运行,而不是在登录本身,这只是另一个页面。特别是如果您没有提供任何代码。

明显的非代码答案是:登录正在执行与页面其余部分不同的操作。找到它是什么并修复它。

运用我的想象力,只提及这里可能发生的一百件事情之一,我打赌问题是你是根据未正确执行或接收的AJAX调用来设置cookie。