带有编码字符的 Angular cookie
Posted
技术标签:
【中文标题】带有编码字符的 Angular cookie【英文标题】:Angular cookies appearing with encoded characters 【发布时间】: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 是一个空格,不知何故这个值被“编码”了。谁知道发生了什么?
【问题讨论】:
【参考方案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 的使用很流行,但是如果您想使用服务器上的值,它会自带包袱。
【讨论】:
以上是关于带有编码字符的 Angular cookie的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Angular 7 中对包含特殊字符的查询参数进行编码?
angular4 组件 css 附加带有背景图像名称的随机字符串