【问题标题】:Unable to receive Cookie in HttpServletRequest contain JSON Format value无法在 HttpServletRequest 中接收包含 JSON 格式值的 Cookie
【发布时间】:2015-09-12 10:45:21
【问题描述】:

我通过 Javascript 添加了两个 cookie。

  1. 测试

    document.cookie = "test=testCookie; expires=Fri, 16 Oct 2015 22:24:05 GMT; path=/";
    
  2. 实际数据

    document.cookie = "item="+JSON.stringify(itemsJSON)+"; expires=Fri, 16 Oct 2015 22:24:05 GMT; path=/";
    

在 HttpServletRequest 请求对象的服务器端,我能够获取“测试”cookie,但不能获取“项目”cookie。当我从“item”cookien 中删除 JSON 值并添加一个虚拟字符串值时,我就可以在请求中获取“item”cookie。这意味着 HttpServletRequest 存在无法接收 JSON 值 cookie 的问题。

有没有办法在 HttpServletRequest 对象中接收 cookie(包含 JSON 格式的值)。

【问题讨论】:

  • 我建议将 json 转换为 Base64,然后在服务器端对其进行解码。

标签: javascript java json servlets


【解决方案1】:

我认为问题不在您的服务器端!如果您可以从 HttpServletRequest 对象中正确地按名称检索 cookie,那么您的服务器代码就可以了。

问题应该是您的 JavaScript 调用在请求提交之前没有返回有效的输出。如果您的 JS 可以访问您文档上的 JSON.stringify() 对象函数,那么在您的 HTTP 请求通过网络发送之前,itemsJSON var 不会在您的浏览器中收集/不可用,因此根本不会创建 cookie 并将其附加到您的要求。

我会在您喜欢的浏览器中使用 JS 调试器。 Chrome 开发工具或 Mozilla Web Developer 插件应该有助于检查 send 之前的 var 值。

【讨论】:

  • itemsJSON 存在。我已经完成了调试。一切正常。浏览器也显示 cookie。在浏览器 cookie 中有带有 JSON 值的项目 cookie,但我无法在服务器端获取该 cookie。
  • 您的 itemsJSON 和 cookie 的大小如何?所有 cookie 的大小不应超过 4093 字节。这意味着您可以拥有 1 个 4093 字节的 cookie,或 2 个 2045 字节的 cookie...
猜你喜欢
  • 2016-01-29
  • 1970-01-01
  • 2016-08-08
  • 1970-01-01
  • 2014-02-16
  • 2021-07-17
  • 2011-01-14
  • 1970-01-01
  • 2013-05-14
相关资源
最近更新 更多