zoukankan      html  css  js  c++  java
  • 为什么用JS取不到cookie的值?解决方法如下!

    注意:cookie是基于域名来储存的。要放到测试服务器上或者本地localhost服务器上才会生效。cookie具有不同域名下储存不可共享的特性。单纯的本地一个html页面打开是无效的。

    明明在浏览中可以查看到有某一个cookie 的存在,可是用js却始终无法获取到它的值,这个问题困扰我许久。偶然间想到可能是iframe的原因,经过一番查阅发现果真如此。

    将场景还原一下:
    我在一个iframe中使用setCookie方法设置了名为“myCookie”的cookie。

    function setCookie(name,value)
    {
    var Days = 30;
    var exp = new Date();
    exp.setTime(exp.getTime() + Days*24*60*60*1000);
    document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();
    }

    而后在另一个iframe使用getCookie方法取出这个cookie:

    function getCookie(objname)
    {
    console.log(document.cookie)
    var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)");
    if(arr=document.cookie.match(reg))
    return unescape(arr[2]);
    else
    return null;
    }


    可是取出的值一直是null,百思不得其解。
    终于经过一番探究与查阅之后,得出结论:cookie跨域导致其丢失。
    百度上有很多博客上作了相关记载,这里不作详究。
    既然得出了原因,那么解决方法也就浮于水面了。我在网上找到一款名为jquery cookie的轻量级插件,对于cookie的操作作了有效的封装,可以解决这类问题。

    这是官方的下载地址:http://plugins.jquery.com/cookie/

    jquery.cookie.js 的配置

    首先包含jQuery的库文件,在后面包含 jquery.cookie.js 的库文件。

    使用方法

    1.新添加一个会话 cookie:

    $.cookie(‘the_cookie’, ‘the_value’);

    注:当没有指明 cookie有效时间时,所创建的cookie有效期默认到用户关闭浏览器为止,所以被称为

    “会话cookie(session cookie)”。

    2.创建一个cookie并设置有效时间为 7天:

    $.cookie(‘the_cookie’, ‘the_value’, { expires: 7 });

    注:当指明了cookie有效时间时,所创建的cookie被称为“持久 cookie (persistent cookie)”。

    3.创建一个cookie并设置 cookie的有效路径:

    $.cookie(‘the_cookie’, ‘the_value’, { expires: 7, path: ‘/’ });

    注:在默认情况下,只有设置 cookie的网页才能读取该 cookie。如果想让一个页面读取另一个页面设置的cookie,必须设置cookie的路径。cookie的路径用于设置能够读取 cookie的顶级目录。将这个路径设置为网站的根目录,可以让所有网页都能互相读取 cookie (一般不要这样设置,防止出现冲突) 。

    4.读取cookie:

    $.cookie(‘the_cookie’); // cookie存在 => ‘the_value’

    $.cookie(‘not_existing’); // cookie不存在 => null

    5.删除cookie,通过传递null作为cookie的值即可:

    $.cookie(‘the_cookie’, null);

    ———-相关参数的解释—————

    1).expires: 365

    定义cookie的有效时间,值可以是一个数字(从创建cookie时算起,以天为单位)或一个Date 对象。如果省略,那么创建的cookie是会话cookie,将在用户退出浏览器时被删除。

    2).path: ‘/’

    默认情况:只有设置cookie的网页才能读取该cookie。
    定义cookie的有效路径。默认情况下, 该参数的值为创建 cookie 的网页所在路径(标准浏览器的行为) 。
    如果你想在整个网站中访问这个cookie需要这样设置有效路径:path: ‘/’。如果你想删除一个定义 了有效路径的 cookie,你需要在调用函数时包含这个路径:$.cookie(‘the_cookie’, null, { path: ‘/’ });。

    domain: ‘example.com’
    默认值:创建 cookie的网页所拥有的域名。

    3).secure: true

    默认值:false。如果为true,cookie的传输需要使用安全协议(HTTPS)。

    4).raw: true

    默认值:false。

    默认情况下,读取和写入 cookie 的时候自动进行编码和解码(使用encodeURIComponent 编码,decodeURIComponent 解码)。
    要关闭这个功能设置 raw: true 即可。
    ————————————————
    原文链接:https://blog.csdn.net/qq_28550739/article/details/61915450

  • 相关阅读:
    vba 填写 Workbok 名片
    VBA 插入和删除工作表
    VBA for each 循环语句
    VBA 中的各种循环
    VBA 的 Join 函数
    VBA 计算数组的最大索引和最小索引
    VBA 变量赋值
    VBA 声明变量
    观察样本的变异程度
    python 将数据写入 Excel 表格
  • 原文地址:https://www.cnblogs.com/autoXingJY/p/11428729.html
Copyright © 2011-2022 走看看