饼干:无效的饼干。值不是令牌或引用值

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 解释了“我们是如何到达这里的”。以上只是所有历史的结果。

【讨论】:

以上是关于饼干:无效的饼干。值不是令牌或引用值的主要内容,如果未能解决你的问题,请参考以下文章

455.分发饼干

分饼干问题

分饼干问题

455 Assign Cookies 分发饼干

贪心算法1分发饼干

leetcode 简单 第一百一十题 分发饼干