java - 在servlet中添加cookie报错
本文介绍了java - 在servlet中添加cookie报错的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
1.在添加cookie的时候报错:
An invalid character [13] was present in the Cookie value
在网上查了一些报错,大部分都是[32]、[44],据说是因为cookie里面添加了,或者空格导致的。
登陆处理的代码是这样的:
//登录处理
@RequestMapping(value = "/login/validate", method = RequestMethod.POST)
public void Validate(@RequestParam("username") String username, @RequestParam("password") String password,
HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) {
String md5 = MD5Util.stringToMD5(password);
if (userService.verification(username, md5)) {
User user = userService.selectByUsername(username);
Long id = user.getId();
Long createDate = new Date().getTime();
String str = id + "=" + createDate;
//加密
byte[] result = DESUtil.desCrypto(str, "12345678");
//把加密的字节数组转换成16进制
// String results = TypeUtil.bytesToHexString(result);
String results = Base64.encodeBase64String(result);
Cookie cookie = new Cookie("token", results);
cookie.setMaxAge(60 * 60 * 24 * 7);//7天
cookie.setPath("/");
System.out.println("新生成cookie和其MaxAge:" + cookie.getName() + "-->" + cookie.getMaxAge());
httpServletResponse.addCookie(cookie);
HttpSession session = httpServletRequest.getSession();
session.setAttribute("user", user);
for (Cookie c : httpServletRequest.getCookies()) {
System.out.println("cookes添加到response后重新获取cookies和其MaxAge:" + c.getName() + "-->" + c.getMaxAge());
}
try {
httpServletResponse.sendRedirect("/index.html");
// httpServletRequest.getRequestDispatcher("/index.html").forward(httpServletRequest, httpServletResponse);
} catch (Exception e) {
e.printStackTrace();
}
} else {
try {
httpServletResponse.sendRedirect("no.html");
} catch (IOException e) {
e.printStackTrace();
}
}
}
报错的地方发生在addCookie这里。
解决方案
经过尝试,把原来的代码2注释,1 放开就可以了,哪位大佬可以解释一下啊
1. String results = TypeUtil.bytesToHexString(result);
2. //String results = Base64.encodeBase64String(result);
这篇关于java - 在servlet中添加cookie报错的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文