cookie的名称 - 值对是否可以包含字符=?

时间:2014-12-31 20:44:28

标签: javascript cookies

我正在处理第三方JavaScript代码,该代码通过document.cookie=设置Cookie但不使用key=value格式;而不是document.cookie="mykey=myvalue"document.cookie="10254/1/19,20,/0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,//20"

这导致我的服务器端代码出现问题,因为Chrome和Firefox将此作为cookie发送到我的服务器,没有名称和价值" 10254/1 / 19,20,/ 0,1,2,3 ,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,// 20&#34 ;. Safari发送一系列没有值的cookie,名称为" 10254/1 // 0,// - 1"," 10254/1 // 0,1,// - 1" ," 10254/1 // 0,1,2,// - 1"等

设置不带格式为key=value的Cookie是否合法?我已阅读http://tools.ietf.org/html/rfc6265#section-4.1.1并看到cookie-pair = cookie-name "=" cookie-value,但我不清楚=是否必须。我想是的,只是想确认一下。

1 个答案:

答案 0 :(得分:0)

回答自己:用户代理应忽略没有=的cookie。来自http://trac.tools.ietf.org/wg/httpstate/trac/ticket/1

  

根据邮件列表和IETF77的讨论,我已从草稿中删除了无名cookie。没有名字的Cookie(因为它们缺少" ="或者因为" ="作为set-cookie-string"的第一个字符出现)现在被忽略用户代理。

但实际上,浏览器会发送name-value-pair不包含=的Cookie。但它们没有相同的行为:例如,如果我使用document.cookie("foo")设置cookie,Safari将向服务器发送一个名为" foo"的cookie。还有一个空白值,而Chrome会发送一个空白名称的Cookie,其价值为" foo"。