js 操作 cookie
程序员文章站
2024-01-20 20:42:10
...
1、设置COOKIE数据:
最基本的COOKIE只包括COOKIE名和它的值,语法如下
document.cookie="Cookie_name=Cookie_value"
警告 不要在cookie名或值中使用如分号(;)、逗号(,)或者空格等特殊字符。
但是,假设我们需要保存的名或值有这些符号,怎么办呢?最简单的办法就是使用escape(string)方法,这个方法是用一个字符串参数,把其中的非字母或数字字符转换为等价的数值(16进制),然后在前面加上百分号。
如:document.cookie="book_name="+escape("Special Edition Using JavaScript")
结果为:Special%20Edition%20Using%20JavaScrpit
2、获取COOKIE值:
获取cookie的值要稍微麻烦一点,首先要把cookie属性保存到一个变量:cookie_string=document.cookie 从而得到一个形如 cookie_name=cookie_value 的字符串。然后取等号的索引位置,再使用String对象的substring()方法抽取值,如果值使用了escape()方法编码,还要用 unescape() 进行解码。cookie_string=unescape(document.cookie)
(注:大哥大姐,看文章时别忘记关注我哟,嘿嘿)
3、处理多个COOKIE:
定义多个COOKIE documet.cookie="name1=value1; name2=value2" 每个cookie之间用分号和一个空格分开
处理用 split() 方法,如: var cookie_array = document.cookie.split(";")
即 cookie_arrar[0]和[1]各为上面的COOKIE字符串。
4、终止日期:
var days=30;
var expire_date=new Date();
var ms_from_now=days*24*60*60*1000;
expire_date.setTime(expire_date.getTime()+ms_from_now);
var expire_string=expire_date.toGMTString();//转为GMT格式的String
document.cookie="count_cookie=visit_number; expires="+expire_string;
5、其他参数:
document.cookie="name=value; path=cookie_dir";//指定访问的目录,所有页面访问,则把path设为根目录(/)。
参数domain用于指定站点上可以访问cookie的主机名,如果没有指定,则默认为站点所在的WEB服务器的主机名。如果服务器只有一个主机名,则不需要考虑这个参数。如:domain=.domain.com
secure, 这是一个boolean值。如果为真,则该cookie只发往使用HTTPS(安全)协议连接的浏览器;如果为假(或忽略)则发给所有的浏览器,即使使用了不安全的HTTP协议。如:document.cookie="name1=value1; true"。
var Asresult = eval('('+XMLHR.responseText+')');
var browsePh = '';
var firstPhoto = '';
for(var i=0;i<Asresult.length;i++)
{
var BrowseName = Asresult[i];
browsePh += '<img src= d:\\upload\\'+albumidBrowse+'\\'+BrowseName + ' width="80" height="50" rel='+'d:\\upload\\'+albumidBrowse+'\\'+ BrowseName +'
name="#" />';
if(i==0)
{
firstPhoto = '<img src= d:\\upload\\'+albumidBrowse+'\\'+BrowseName + ' width="640" height="400" id="mainphoto"
rel='+'d:\\upload\\'+albumidBrowse+'\\'+ BrowseName +' name="#" />';
document.cookie = "firstPhoto="+firstPhoto;
}
}
//获取当前路径
a=self.location.toString();
var b="";
for(i=0;i<a.split("/").length-2 ;i++)
{
b=b+a.split("/")[i].toString()+"/";
}
var pt = b+'album/'+'browsePhoto.jsp';
document.cookie = "browsePh="+browsePh;
window.info.location = b+'album/'+'browsePhoto.jsp';
<iframe name="info" src="" scrolling="auto" frameborder="0" width="100%" height="500"></iframe>
<%
String browsePh = "";
String firstPhoto = "";
Cookie[] cookies = request.getCookies();
if(cookies!=null)
{
for (int i = 0; i < cookies.length; i++)
{
Cookie c = cookies[i];
if(c.getName().equalsIgnoreCase("browsePh"))
{
browsePh = c.getValue();
System.out.println("browsePh = "+browsePh);
}
if(c.getName().equalsIgnoreCase("firstPhoto"))
{
firstPhoto = c.getValue();
System.out.println("firstPhoto = "+browsePh);
}
c.setMaxAge(-1);
}
}
%>
<div id="tbody">
<div id="mainbody">
<%=firstPhoto %>
</div>
......
如果不设置过期时间,则表示这个cookie的生命期为浏览器会话期间,只要关闭浏览器窗口,cookie就消失了。这种生命期为浏览器会话期的cookie被称为会话cookie。会话cookie一般不存储在
硬盘上而是保存在内存里,当然这种行为并不是规范规定的。如果设置了过期时间,浏览器就会把cookie保存到硬盘上,关闭后再次打开浏览器,这些cookie仍然有效直到超过设定的过期时间。
String MpCookie = "";
Cookie[] cookies = request.getCookies();
if(cookies!=null)
{
for (int i = 0; i < cookies.length; i++)
{
Cookie c = cookies[i];
if(c.getName().equalsIgnoreCase("MpCookie"))
{
//decodeURIComponent
MpCookie = c.getValue();
System.out.println("*******************MpCookie = "+MpCookie);
}
c.setMaxAge(-1);
}
}