我正在处理第三方 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 将其作为没有名称且值为“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"。 Safari 发送一系列没有值且名称为“10254/1//0,//-1”、“10254/1//0,1,//-1”、“10254/1//0,1”的 cookie ,2,//-1"等
设置没有 key=value
格式的 cookie 是否合法?我读过https://www.rfc-editor.org/rfc/rfc6265#section-4.1.1并看到 cookie-pair = cookie-name "= cookie-value
但我不清楚 =
是否是强制性的。我想是的,只是想确认一下。
最佳答案
回答我自己:没有 =
的 cookies 应该被用户代理忽略。来自 http://trac.tools.ietf.org/wg/httpstate/trac/ticket/1
Per discussion on the mailing list and at IETF77, I've removed nameless cookies from the draft. Cookies without names (either because they lack a "=" or because "=" occurs as the first character of the set-cookie-string") are now ignored by the user agent.
但实际上,浏览器确实会发送 name-value-pair
不包含 =
的 cookie。但它们没有相同的行为:例如,如果我使用 document.cookie("foo")
设置 cookie,Safari 会向服务器发送一个名为“foo”和空白值的 cookie ,而 Chrome 将发送一个名称为空且值为“foo”的 cookie。
关于javascript - cookie的名称-值对可以不包含字符=吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27726166/