【问题标题】:Angular cookies appearing with encoded characters带有编码字符的 Angular cookie
【发布时间】:2013-06-06 08:30:42
【问题描述】:

给定一些数据:

$scope.devices = [
  { name: 'iPhone 4', os: 'iOS'},
  { name: 'Nexus 7', os: 'Android'},
];

还有一个设置cookie的函数:

$scope.saveDeviceChoice = function() {
  $cookieStore.put('savedDevice', $scope.deviceChoice.name);
}

我得到一个值为 %22Nexus%207%22 的 cookie,而不是我所期望的:Nexus 7。

这就是它在网络检查器中的样子

我真的很困惑 - 似乎 %22 是一个引号,而 %20 是一个空格,不知何故这个值被“编码”了。谁知道发生了什么?

【问题讨论】:

    标签: javascript cookies angularjs angular-cookies


    【解决方案1】:

    这里是 $cookieStore 的官方文档:

    提供由会话 cookie 支持的键值(字符串对象)存储。从此存储中放入或检索的对象由 angular 的 toJson/fromJson 自动序列化或反序列化。

    然后商店保存 URL 编码 版本的值。看看this article,有一节解释cookie编码。

    【讨论】:

    • 从后端读取 cookie 时很痛苦,您必须将其解码才能使用它
    【解决方案2】:

    $cookieStore.(get/put) 在您发送过来的值上自动运行到 Json 或从 Json 运行,这会附加编码字符。

    如果您只使用 $cookies,那么您可以通过设置参数来逃避

    $cookies['savedDevice'] = $scope.deviceChoice.name;
    

    $cookies.savedDevice = $scope.deviceChoice.name;
    

    无论哪种方式,值都会按照您想要的方式保存。

    $cookieStore 的使用很流行,但是如果您想使用服务器上的值,它会自带包袱。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多