Tomcat写Cookie包含双引号问题

之前有一个java后台处理cookie的简单需求,但是cookie的值是包含特殊符号的一串字符串如:

uoeOwviAJ6VQEgTNwLuTqSV9j/bS+aOP3Riia1P+kyQbgkQZsD2gidgV9y0ObPgHaK1jGRuV/ogQh92/eK0bOZIBgf3qugWHL9vugj04hgtaNk0Gj/R7rz7oqiBhjlrKOqlpsCOus6v/HwtGKaj3qVz/e1TTHgzQIh4vje/62plfG0dwz95YT6F5PULR+Kobpo+K5EenGT0gKJrPmCSn57yrxa6uiIOZDkImXa6x08/S3eExwtoDsaerOuBf5ZHTwflFyE/PFf7jYfdqXH6eAmCKdetG8qPqJZXnRcApC2wW4XcwqSJ0pA==

项目部署在tomcat容器,发现写入的cookie被自动添加上了双引号。导致调用方读取到cookie解析失败。

查看了一些资料,比较好的做法是先将cookie url编码,读取时url 解码即可。

但是这就要调用方二次开发做兼容。且老接口(.net)是支持将上述cookie 写入的。

阅读tomcat源码, org.apache.tomcat.util.http包下的CookieSupport:

/**

* If true, cookie values are allowed to contain an equals character without

* being quoted.

*/

public static final boolean ALLOW_EQUALS_IN_VALUE;

设置System.setProperty("org.apache.tomcat.util.http.ServerCookie.ALLOW_EQUALS_IN_VALUE", "true"),允许使用=符号

/**

* If true, separators that are not explicitly dis-allowed by the v0 cookie

* spec but are disallowed by the HTTP spec will be allowed in v0 cookie

* names and values. These characters are: \"()/:<=>?@[\\]{} Note that the

* inclusion of / depends on the value of {@link #FWD_SLASH_IS_SEPARATOR}.

*/

public static final boolean ALLOW_HTTP_SEPARATORS_IN_V0;

设置System.setProperty("org.apache.tomcat.util.http.ServerCookie.ALLOW_HTTP_SEPARATORS_IN_V0", "true"),允许使用http分隔符

也可在tomcat 的conf目录下更改catalina.properties,添加以上两个配置。 

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,224评论 19 139
  • rljs by sennchi Timeline of History Part One The Cognitiv...
    sennchi阅读 12,196评论 0 10
  • =========================================================...
    lavor阅读 8,888评论 0 5
  • get是从服务器上获取数据,post是向服务器传送数据。 get是把参数数据队列加到提交表单的ACTION属性所指...
    ConRon阅读 2,860评论 0 4
  • 阴沉了好久,终于等来了个艳阳天,心似花开,舒展了每一片花瓣。 没来得及发表,天儿变了!艳阳藏起来了,似乎怕我找到他...
    为你诗书阅读 1,549评论 0 4

友情链接更多精彩内容