AngularJS(十六)Cookie读写

1 Cookie简介

Cookie的中文释义为“小型文本文件”或“小甜饼”,指某些网站为了辨别用户身份而存储在用户本地的数据。这些数据是经过加密的,总是保存在客户端。按照在客户端中的存储位置,可分为内存Cookie和硬盘Cookie。内存Cookie由浏览器维护,保存在内存中,浏览器关闭后消失,存活时间是比较短暂的。硬盘Cookie存储在硬盘里,有一个过期时间,除非用户手动清理或到了过期时间,否则硬盘Cookie不会被删除,其存在时间是长期的,因而又可分别称之为非持久Cookie和持久Cookie。

Cookie技术在某种意义上弥补了HTTP协议的不足,因为HTTP协议是无状态的,即服务器不知道用户上一次做了什么。Cookie技术被浏览器普遍使用,但存在一定缺陷。
· Cookie会被附加在每个HTTP请求中,无形中增加了服务端请求的数据量。
· HTTP请求中Cookie是明文传递的,所以存在一定的安全问题。
· Cookie大小一般限制在4KB左右,对于复杂的存储需求来说不够用。

计算机中的每个浏览器都会以独立的空间存放Cookie。因为Cookie中不但可以确认用户信息,还能包含计算机和浏览器的信息,所以一个用户使用不同的浏览器或者用不同的计算机,都会得到不同的Cookie信息。

2 使用JavaScript操作Cookie

3 在AngularJS中操作Cookie

AngularJS封装了一个单独的ngCookies模块,用于简化Cookie操作。该模块代码放在单独的angular-cookies.js文件中。在使用ngCookies模块之前要先将它引入到我们的页面当中。

var cookieMod = angular.module("cookieMod", ["ngCookies"]);

AngularJS提供的与Cookie操作相关的API有$cookiesProvider、$cookies、$cookieStore。其中,$cookiesProvider用于对$cookies服务的默认行为进行配置,主要有以下几个属性。

· path:字符串类型,Cookie只在这个路径及其子路径可用。默认情况下,这个值将会是出现在<base>标签上的网址路径。
· domain:字符串类型,Cookie只在这个域及其子域可用。为了安全问题,如果当前域不是需求域或者其子域,那么用户代理不会接受Cookie。
· expires:字符串类型,过期日期。“Wdy,DD Mon YYYY HH:MM:SS GMT”格式的字符串或者一个日期对象表示Cookie将在这个确切日期过期。
· secure:布尔类型,该Cookie将只在安全连接中被提供。

angular.module("myApp", []).config(["$cookiesProvider", cookiesFn]);
function cookiesFn($cookiesProvider) {
    $cookiesProvider.defaults = {
        path: yourPath,
        domain: yourDomain,
        expires: expireDate,
        secure: true/false
    };
}

$cookies服务提供了浏览器Cookie读写的一些方法,具体如下:
· get(key),根据Cookie名称返回对应的Cookie值。
· getObject(key),根据key获取对应Cookie的反序列化值。
· getAll(),返回所有的Cookie键值对格式对象。
· put(key, value, [options]),根据给定的Cookie名称创建Cookie。value为Cookie的值,options为可选参数,用于设置Cookie的一些额外信息,例如Cookie的有效日期。
· putObject(key, value, [options]),根据Cookie名称创建一个Cookie。
· remove(key, [options]),根据Cookie名称删除Cookie信息。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容