【问题标题】:Why is cookie value part after '@' being ignored?为什么 '@' 之后的 cookie 值部分被忽略?
【发布时间】:2011-07-21 01:42:31
【问题描述】:

当我读取 cookie 的值时,“@”后面的部分被忽略。所以,如果我的 cookie 值是“abc@xyz”,那么当我通过

检索值时,我只会得到“abc”
  Cookie cookies [] = request.getCookies ();
    pwd=cookies[0].getValue();

而在 javascript 中,我可以轻松地将其读取为“abc@xyz”,甚至在浏览器 cookie 中,我也可以看到 cookie 的值为“abc@xyz”。这里有什么问题?

【问题讨论】:

  • 你的意思是 '@' 不允许作为 cookie 的一部分?如果是,那么在保存时,它是用“@”保存的,甚至 Javascript 也能够完整地读取它,这不是很奇怪吗!

标签: java cookies


【解决方案1】:

我的第一个猜测是与字符编码有关的问题。您是否尝试过 urlencode 和 -decode cookie 值?

编辑:

您可以使用 URLDecoder.decode (cookies[0].getValue(), "utf-8") 检索 cookie 值。

为了使其工作,首先当然必须对值进行编码:如果您要从 Java 设置 cookie 值,请使用 URLEncoder.encode("abc@xyz", "utf-8"),或者使用 encodeURIComponent("abc@xyz") 从 JavaScript 设置值。我不知道 cookie 是如何设置的,所以你可能需要为你正在使用的任何平台找出这个。

【讨论】:

  • 也许你可以帮助我如何做到这一点?会尝试一下。谢谢
  • 是的,它成功了!非常感谢!早些时候我在 javascript 中使用escape() 对值进行编码,但只是知道它不编码'@'; encodeURIComponent() 也对“@”进行编码,因此可以对其进行正确编码,然后按照您的描述在 java 中使用 URLDecoder.decode() 进行解码。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-06
  • 2019-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多