饼干:无效的饼干。值不是令牌或引用值
Posted
技术标签:
【中文标题】饼干:无效的饼干。值不是令牌或引用值【英文标题】:Cookies: Invalid cookie. Value not a token or quoted value 【发布时间】:2018-10-03 09:06:33 【问题描述】:我正在实现一个前端 angular 5 和后端 springboot 的项目。
当我尝试从客户端向后端发送请求时,在 google chrome 控制台中显示以下消息
GET http://localhost:4200/customer 404 (Introuvable)
在 tomcat 控制台中,我得到了这一行
avr. 23, 2018 11:26:21 AM org.apache.tomcat.util.http.LegacyCookieProcessor processCookieHeader
INFOS: Cookies: Invalid cookie. Value not a token or quoted value
Note: further occurrences of Cookie errors will be logged at DEBUG level.
解决办法是什么?
【问题讨论】:
【参考方案1】:您有一个客户端发送带有未正确引用的值的 cookie。
浏览器的问题在于,它们从来都没有足够的可信度来始终如一地、完全地和(可能是最重要的)同时遵循 cookie 规范。也就是说,每个浏览器都可以随心所欲地使用 cookie 值、引用等,它们偶尔会更改自己的规则并遵循各种版本的规范,而且它们通常不会相互同意。
cookie 规范在很大程度上失败了,原因有很多,其中最重要的是向后兼容性。我们处于一种可能永远被破坏的情况。
底线是您不能信任具有 cookie 值且其中包含任何“奇怪”内容的网络浏览器。 “奇数”被定义为除[A-Za-z0-9]+
外加几个标点字符之外的任何内容。抱歉,这只是现实情况。
那么,你会怎么做呢?
简单:对您的 cookie 值进行编码,以便它们始终采用与 [A-Za-z0-9]+
以及少数标点字符匹配的格式。一种流行的编码是base64
。只需在 base64
中编码所有 cookie 值,您就会发现大部分(如果不是全部)cookie 问题都会消失。 Base64 编码的值永远不需要引用,所以如果浏览器引用了这个值,很好……如果没有,没问题。
有一个exhaustive answer here 解释了“我们是如何到达这里的”。以上只是所有历史的结果。
【讨论】:
以上是关于饼干:无效的饼干。值不是令牌或引用值的主要内容,如果未能解决你的问题,请参考以下文章