要使用cookies API, 你必须在你的清单中声明"cookies"权限,以及任何你希望cookie可以访问的主机权限。例如:
{
"name": "My extension",
...
"permissions": [
"cookies"
],
...
}
setCookies: function(url, name, value, expireSecond) {
//var exdate = new Date();
var param = {
url : url,
name : name,
value : value,
path: '/'
};
if (!!expireSecond) {
param.expirationDate = new Date().getTime() / 1000 + expireSecond;
}
chrome.cookies.set(param, function(cookie) {});
}
chrome.cookies.set(object details)
用给定数据设置一个cookie。如果相同的cookie存在,它们可能会被覆盖。
param是待设置cookie的详细信息。
url ( string )
与待设置cookie相关的URL。该值影响所创建cookie的默认域名与路径值。如果清单文件中没有设置这个URL对应的主机权限,那么这个API调用会失败。
name ( optional string )
cookie名称,默认为空值。
value ( optional string )
cookie的值,默认为空值。
domain ( optional string )
cookie的域名。如果未指定,则该cookie是host-only cookie。
path ( optional string )
cookie的路径。默认是url参数的路径部分。
secure ( optional boolean )
是否cookie标记为保密。默认为false。
httpOnly ( optional boolean )
是否cookie被标记为HttpOnly。默认为false。
expirationDate ( optional number )
cookie的过期时间,用从UNIX epoch开始计的秒数表示。如果未指定,该cookie是一个会话cookie。
storeId ( optional string )
用于保存该cookie的存储id。默认情况下,当前执行上下文的cookie存储将被使用。
getCookies: function(url, key, callback, isAutoDelay, params) {
chrome.cookies.get({
url : url,
name : key
}, function(cookies) {
if (cookies && cookies.value && isAutoDelay) {
//自动延长cookie时间
Gome.Cookie.setCookies(url, key, cookies.value, Gome.Constant.COOKIE.EXPIRE);
}
if (params) {
callback(cookies, params);
} else {
callback(cookies);
}
});
}
chrome.cookies.get(object details, function callback)
获取一个cookie的信息。如果对于给定的URL有多个cookie存在,将返回对应于最长路径的cookie。对于路径长度相同的cookies,将返回最早创建的cookie。
参数
details ( object对象 )
用于识别所收到的cookie的详细信息。
url ( string字符串 )
与所收到的cookie关联的URL。这个参数可以是一个完整的URL,这时候所有跟随在URL上的数据(比如查询字符串)将被忽略。如果清单文件中没有设置这个URL对应的主机权限,那么这个API调用会失败。
name ( string字符串 )
收到的cookie名字。
storeId ( optional string可选,字符串 )
cookie的存储id,用于从中检索cookie。默认情况下,当前执行上下文的cookie存储将被使用。
callback ( function 函数 )
回调函数
如果指定了回调参数,它应该指定一个如下所示函数:
function(Cookie cookie) {...};
cookie ( optional Cookie ) (可选,Cookie)
包含cookie的详细信息。如果没找到cookie,该参数为null。
removeCookies: function(url, key, callback) {
chrome.cookies.remove({
url : url,
name : key
}, function (cookies) {
callback(cookies);
});
}
chrome.cookies.remove(object details)
根据名称删除cookie。
参数
details ( object )
用于鉴定待删除cookie的信息。
url ( string )
与所收到的cookie关联的URL。如果清单文件中没有设置这个URL对应的主机权限,那么这个API调用会失败。
name ( string )
待删除cookie的名称。
storeId ( optional string )
cookie的存储id,用于从中检索cookie。默认情况下,当前执行上下文的cookie存储将被使用。
事件
onChanged
chrome.cookies.onChanged.addListener(function(object changeInfo) {...});
当一个cookie被设置或者删除时候触发。
参数
changeInfo ( object )
removed ( boolean )
True表示一个cookie被删除。
cookie ( Cookie )
被设置或者删除的cookie的信息。
类型
Cookie
( object )
表示一个HTTP cookie的信息。
name ( string )
cookie名称。
value ( string )
cookie值。
domain ( string )
cookie的域名。(例如 "www.google.com", "example.com").
hostOnly ( boolean )
True表示cookie是一个host-only cookie (例如,一个检索的主机必须与cookie的域名完全一致)。
path ( string )
cookie的路径。
secure ( boolean )
True表示cookie被标记为保密。(例如,它的有效范围被限制于加密频道,最典型是HTTPS).
httpOnly ( boolean )
True表示cookie被标记为HttpOnly (例如cookie在客户端的脚本无法访问)。
session ( boolean )
True表示cookie是线程cookie,与有过期时间的持久cookie相对应。
expirationDate ( optional number )
cookie的过期时间,用从UNIX epoch(00:00:00 UTC on 1 January 1970)开始计的秒数表示。会话cookie没有该属性。
storeId ( string )
包含该cookie的存储id,可通过getAllCookieStores()获取。