概述
服务端代码
Cookie[] cookies = request.getCookies();
LOGGER.info("historyOrder.cookies=" + JsonUtils.toJson(cookies));
Cookie userIdCookie = CookieUtil.getCookieByName(request, "userId");
if (null == userIdCookie || StringUtils.isBlank(userIdCookie.getValue())) {
responseDto.setErrno(11);
responseDto.setErrmsg("请求参数异常![0002]");
return responseDto;
}
String cookieUserId = userIdCookie.getValue();
LOGGER.info("historyOrder.cookies.userId=" + cookieUserId);
//附CookieUtil.getCookieByNamey方法
public static Cookie getCookieByName(HttpServletRequest request, String name) {
Map<String, Cookie> cookieMap = readCookieMap(request);
if (cookieMap.containsKey(name)) {
Cookie cookie = (Cookie) cookieMap.get(name);
return cookie;
} else {
return null;
}
}
public static Map<String, Cookie> readCookieMap(HttpServletRequest request) {
Map<String, Cookie> cookieMap = new HashMap<String, Cookie>();
Cookie[] cookies = request.getCookies();
if (null != cookies) {
for (Cookie cookie : cookies) {
cookieMap.put(cookie.getName(), cookie);
}
}
return cookieMap;
}
测试代码:
document.cookie="userId=liuzhichong;path=/;Max-Age=360000000"
测试结果
historyOrder.cookies.userId=liuzhichong
=====================================================
下面这2个测试是有问题的哟
测试代码:
document.cookie="userId=liuzhichong@;path=/;Max-Age=360000000"
测试结果
historyOrder.cookies.userId=liuzhichong
测试代码:
document.cookie="userId=liuzhi@chong@;path=/;Max-Age=360000000"
测试结果
historyOrder.cookies.userId=liuzhi
参考文章:http://www.blogjava.net/stone2083/archive/2010/11/03/336923.html
我们在实际使用Cookie过程中要注意一些问题:
1. Cookie的兼容性问题
Cookie的格式有2个不同的版本,第一个版本,我们称为Cookie Version 0,是最初由Netscape公司制定的,也被几乎所有的浏览器支持。而较新的版本,Cookie Version 1,则是根据RFC 2109文档制定的。为了确保兼容性,JAVA规定,前面所提到的涉及Cookie的操作都是针对旧版本的Cookie进行的。而新版本的Cookie目前还不被Javax.servlet.http.Cookie包所支持。
2. Cookie的内容
同样的Cookie的内容的字符限制针对不同的Cookie版本也有不同。在Cookie Version 0中,某些特殊的字符,例如:空格,方括号,圆括号,等于号(=),逗号,双引号,斜杠,问号,@符号,冒号,分号都不能作为Cookie的内容。这也就是为什么我们在例子中设定Cookie的内容为“Test_Content”的原因。
虽然在Cookie Version 1规定中放宽了限制,可以使用这些字符,但是考虑到新版本的Cookie规范目前仍然没有为所有的浏览器所支持,因而为保险起见,我们应该在Cookie的内容中尽量避免使用这些字符。
最后
以上就是标致草莓为你收集整理的Cookie中特殊字符的坑的全部内容,希望文章能够帮你解决Cookie中特殊字符的坑所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复