为什么用JS取不到cookie的值?解决方法如下!
来源:互联网 发布:mac防蹭网 编辑:程序博客网 时间:2024/06/11 13:15
明明在浏览中可以查看到有某一个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 即可。
- 为什么用JS取不到cookie的值?解决方法如下!
- httpURLConnection.getHeaderField("Set-Cookie")没有/取不到值解决方法
- php表单取不到值的解决方法!!!
- php 取不到cookie值
- js取不到input的值
- JS给文本框赋值后,在页面后台取不到文本框值的解决方法
- 在js文件中写el表达式取不到值的原因及解决方法
- 在js文件中写el表达式取不到值的原因及解决方法
- 由为什么${requestScope.paramName}取不到值所学到的!
- 为什么在controller里取不到密码框的值
- HttpContext.Current.Request.Files后台取不到值的解决方法
- HttpContext.Current.Request.Files后台取不到值的解决方法
- 页面刷新两次为什么取不到值
- 为什么getWidth取不到
- jquery取不到cookie中的值(本地有cookie但就是无法取到对应的值)
- js document.getElementIdBy 取不到值的一种可能 onLoad
- webBrowser1.Document.Cookie取不到HttpOnly的Cookie,取Cookie不完整
- 关于struts2中使用OGNL表达式取值,取不到值的原因及解决方法
- webpack引用动态资源路径错误的解决方案
- execute、executeUpdate、executeQuery三者的区别(及返回值)
- UIScrollView 的基本使用
- gcd-洛谷P2398 GCD SUM
- (转载) 如何利用github打造博客专属域名
- 为什么用JS取不到cookie的值?解决方法如下!
- hadoop,spark学习之路
- 从一个游戏开始看设计(一)
- 计算机图形学04一一OpenGL Bresenham画线算法
- CentOS6.5 安装配置 vsftpd
- 获得泛型的Class
- JS and jquery 常用函数
- Kerberos更换密码
- 营销页html的制作