jQuery中cookie的简单操作

时间:2021-11-02 06:57:42

jQuery 可以通过 jquery.cookie.js 插件来操作 Cookie。

用NuGet安装:PM>Install-Package js-cookie -Version

官网:https://www.npmjs.com/package/js-cookie#direct-download

点击下载:https://github.com//js-cookie/js-cookie/archive/master.zip

直接在jQuery.js之后引用 :

<script src="https://cdn.jsdelivr.net/npm/js-cookie@2/src/js.cookie.min.js"></script>

基本用法

创建一个在整个网站上有效的Cookie:

Cookies.set('name', 'value');

创建一个从现在起7天后过期的cookie,在整个站点上有效:

Cookies.set('name', 'value', { expires: 7 });

创建一个过期的cookie,对当前页面的路径有效:

Cookies.set('name', 'value', { expires: 7, path: '' });

读取cookie:

Cookies.get('name'); // => 'value'
Cookies.get('nothing'); // => undefined

阅读所有可见的Cookie:

Cookies.get(); // => { name: 'value' }

删除cookie:

Cookies.remove('name');

删除对当前页面路径有效的cookie:

Cookies.set('name', 'value', { path: '' });
Cookies.remove('name'); // 失败!
Cookies.remove('name', { path: '' }); //删除了! 

重要!删除cookie时,必须传递用于设置cookie的完全相同的路径和域属性,除非您依赖于默认属性。

注意:删除未存在的cookie不会引发任何异常,也不会返回任何值

Cookie属性

Cookie属性默认值可以通过设置Cookies.defaults对象的属性来全局设置,也可以Cookies.set(...)通过在最后一个参数中传递普通对象来为每个调用单独设置。每次调用属性会覆盖默认属性。

expires

定义何时删除cookie。值可以是Number将被解释为创建时或Date实例的天数。如果省略,cookie将成为会话cookie。

要创建在不到一天的时间内到期的cookie

默认值:用户关闭浏览器时会删除Cookie。

例子:

Cookies.set('name', 'value', { expires: 365 });
Cookies.get('name'); // => 'value'
Cookies.remove('name');

path

String表示cookie可见的路径。

默认: /

例子:

Cookies.set('name', 'value', { path: '' });
Cookies.get('name'); // => 'value'
Cookies.remove('name', { path: '' }); 

关于Internet Explorer的注意事项:

由于底层WinINET InternetGetCookie实现中存在一个模糊的错误,如果使用包含文件名的路径属性设置,IE的document.cookie将不会返回cookie。 

这意味着path: window.location.pathname如果这样的路径名包含如下所示的文件名,则无法设置路径:( /check.html或者至少,这样的cookie无法正确读取)。 

domain

String表示cookie应该可见的有效域。cookie也将对所有子域可见。

默认值: Cookie仅对创建cookie的页面的域或子域可见,Internet Explorer除外(请参见下文)。

例子:

假设正在创建的cookie site.com

Cookies.set('name', 'value', { domain: 'subdomain.site.com' });
Cookies.get('name'); // => undefined (need to read at 'subdomain.site.com')

关于Internet Explorer默认行为的注意事项:

如果我没有为cookie指定DOMAIN属性,IE会将它发送到所有嵌套的子域吗。例子上设置的cookie将发送到sub2.sub1.example.com。在这方面,Internet Explorer与其他浏览器不同。这意味着如果省略该domain属性,它将在IE中显示为子域。

secure

任一truefalse,表示如果cookie传输需要安全协议(HTTPS)。

默认值:无安全协议要求。

例子:

Cookies.set('name', 'value', { secure: true });
Cookies.get('name'); // => 'value'
Cookies.remove('name');