博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Cookie Version in J2EE
阅读量:5122 次
发布时间:2019-06-13

本文共 1170 字,大约阅读时间需要 3 分钟。

Cookie Version in J2EE

原文章:

在处理Cookie的时候发现不能处理servlet request中不能获取cookie中的带”:”字符的值.

Cookie[] cookies = request.getCookies();if (cookies != null) {    for (Cookie cookie : cookies) {        if (StringUtils.equalsIgnoreCase(cookie.getName(), name)) {            value = cookie.getValue(); // if the value in cookie is 'http://example.com' then here it will get 'http'            break;        }    }}

 

这是因为目前Cookie有两个标准,一个是Version 0 ()

而J2EE的实现描述 Cookie#setValue 中

12
With Version 0 cookies, values should not contain white space, brackets, parentheses, equals signs, commas, double quotes, slashes, question marks, at signs, colons, and semicolons. Empty values may not behave the same way on all browsers.`

也就是说Version 0 是不能包含空格,括弧,等号,逗号, 双引号等字符的。

而Version 1 () 是可以的。

但是javax.servlet.http.Cookie的实现时默认是使用 Version 0

12
By default, cookies are created according to the Netscape cookie specification. The version can be changed with thesetVersion method.

而看起来container默认的选择也是使用了Version 0而没有去改变version。所以当Cookie值中带有’:’时,就无法读到colon后的内容。

如果没有办法改container并且只能使用默认的request的话,暂时的解决方案是在写cookie的时候URLEncode, 然后在服务器端读的时候做URLDecode

转载于:https://www.cnblogs.com/villadora/p/3767316.html

你可能感兴趣的文章
java算法:插入排序
查看>>
常见Web技术之间的关系,你了解多少?
查看>>
Spring中的WebAppRootListener
查看>>
elasticsearch安全重启节点
查看>>
线程和多线程学习
查看>>
梦断代码阅读笔记01
查看>>
Deprecated: Assigning the return value of new by reference is deprecated in报错
查看>>
第四次作业-坦克大战
查看>>
O365(世纪互联)SharePoint 之使用列表库发布新闻
查看>>
bootstrap-select详细语句分析,如有错误请指出,感谢。
查看>>
遍历三维数组
查看>>
Python语言的有限状态机实现样例
查看>>
桐桐的贸易--WA
查看>>
LightTools.v5.1_完整好用版本\
查看>>
javascript中的变量提升
查看>>
获取AWR报告
查看>>
小程序组件
查看>>
grunt学习2
查看>>
IDEA中web项目maven项目手动打war包的方式
查看>>
Spring Boot 初体验(6)Spring Boot JdbcTemplate
查看>>