JavaScript BOM Cookie 的使用

JavaScript Cookie

Cookie是计算机上存储在小文本文件中的数据。当Web服务器将网页发送到浏览器时,连接将关闭,服务器将忘记用户的所有内容。发明Cookie是为了解决“如何记住用户信息”的问题:
当用户访问网页时,他/她的名字可以存储在cookie中。
下次用户访问该页面时,cookie会“记住”他/她的名字。
Cookie以键值对形式保存,如:

username = John Doe

当浏览器从服务器请求网页时,属于该页面的cookie将添加到请求中。这样,服务器获取必要的数据以“记住”有关用户的信息。
如果您的浏览器已关闭本地Cookie支持,则以下示例均无效。

使用JavaScript创建Cookie

JavaScript可以使用document.cookie属性创建,读取和删除cookie。使用JavaScript,可以像这样创建一个cookie:

document.cookie = "username=John Doe";

您还可以添加到期日期(以UTC时间为单位)。默认情况下,在浏览器关闭时删除cookie:

document.cookie = "username=John Doe; expires=Thu, 18 Dec 2013 12:00:00 UTC";

使用path参数,您可以告诉浏览器cookie属于哪个路径。默认情况下,cookie属于当前页面。

document.cookie = "username=John Doe; expires=Thu, 18 Dec 2013 12:00:00 UTC; path=/";

使用JavaScript阅读Cookie

使用JavaScript,cookie可以像这样读取:

var x = document.cookie;

document.cookie将返回一个字符串中的所有cookie,如:cookie1 = value; cookie2 =值; cookie3 =值;

使用JavaScript更改Cookie

使用JavaScript,您可以像创建cookie一样更改cookie:

document.cookie = "username=John Smith; expires=Thu, 18 Dec 2013 12:00:00 UTC; path=/";

旧cookie被覆盖。

使用JavaScript删除Cookie

删除cookie非常简单。删除cookie时,不必指定cookie值。只需将expires参数设置为传递日期:

document.cookie = "username=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;";

您应该定义cookie路径以确保删除正确的cookie。如果您未指定路径,某些浏览器将不允许您删除cookie。

Cookie字符串

document.cookie属性看起来像普通的文本字符串。但事实并非如此。即使你将一个完整的cookie字符串写入document.cookie,当你再次读出它时,你只能看到它的名称 - 值对。如果您设置了新cookie,则不会覆盖较旧的cookie。新的cookie被添加到document.cookie,所以如果你再次阅读document.cookie,你会得到类似的东西:cookie1 = value; cookie2 = value;
如果要查找一个指定cookie的值,则必须编写一个JavaScript函数来搜索cookie字符串中的cookie值。

JavaScript Cookie示例

在下面的示例中,我们将创建一个存储访客姓名的cookie。访问者第一次到达网页时,将要求他/她填写他/她的姓名。然后将名称存储在cookie中。下次访问者到达同一页面时,他/她将收到欢迎信息。在这个例子中,我们将创建3个JavaScript函数:

  1. 用于设置cookie值的函数
  2. 获取cookie值的函数
  3. 用于检查cookie值的函数
  4. 设置Cookie的功能

首先,我们创建一个函数将访问者的名称存储在cookie变量中:

function setCookie(cname, cvalue, exdays) {
  var d = new Date();
  d.setTime(d.getTime() + (exdays*24*60*60*1000));
  var expires = "expires="+ d.toUTCString();
  document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
}

示例说明:
上述函数的参数是cookie的名称(cname),cookie的值(cvalue)以及cookie到期之前的天数(exdays)。该函数通过将cookiename,cookie值和expires字符串相加来设置cookie。
获取Cookie的功能
然后,我们创建一个function返回指定cookie的值:

function getCookie(cname) {
  var name = cname + "=";
  var decodedCookie = decodeURIComponent(document.cookie);
  var ca = decodedCookie.split(‘;‘);
  for(var i = 0; i < ca.length; i++) {
    var c = ca[i];
    while (c.charAt(0) == ‘ ‘) {
      c = c.substring(1);
    }
    if (c.indexOf(name) == 0) {
      return c.substring(name.length, c.length);
    }
  }
  return "";
}

功能说明:
将cookiename作为参数(cname)。使用要搜索的文本(cname +“=”)创建变量(名称)。解码cookie字符串,处理带有特殊字符的cookie,例如‘$‘将分号上的document.cookie拆分为名为ca的数组(ca = decodingCookie.split(‘;‘))。循环通过ca数组(i = 0; i < ca.length; i ++),并读出每个值c = ca [i])。如果找到cookie(c.indexOf(name)== 0),则返回cookie的值(c.substring(name.length,c.length))。如果找不到cookie,则返回“”。
检查Cookie的功能
最后,我们创建一个函数来检查是否设置了cookie。如果设置了cookie,它将显示问候语。如果未设置cookie,它将显示一个提示框,询问用户的名称,并通过调用setCookie函数将用户名cookie存储365天:

function checkCookie() {
  var username = getCookie("username");
  if (username != "") {
   alert("Welcome again " + username);
  } else {
    username = prompt("Please enter your name:", "");
    if (username != "" && username != null) {
      setCookie("username", username, 365);
    }
  }
}

所有代码都在一起实现

function setCookie(cname, cvalue, exdays) {
  var d = new Date();
  d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));
  var expires = "expires="+d.toUTCString();
  document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
}
function getCookie(cname) {
  var name = cname + "=";
  var ca = document.cookie.split(‘;‘);
  for(var i = 0; i < ca.length; i++) {
    var c = ca[i];
    while (c.charAt(0) == ‘ ‘) {
      c = c.substring(1);
    }
    if (c.indexOf(name) == 0) {
      return c.substring(name.length, c.length);
    }
  }
  return "";
}
function checkCookie() {
  var user = getCookie("username");
  if (user != "") {
    alert("Welcome again " + user);
  } else {
    user = prompt("Please enter your name:", "");
    if (user != "" && user != null) {
      setCookie("username", user, 365);
    }
  }
}

上面的示例checkCookie()在页面加载时运行该函数。
更详情的Cookie技术文章

原文地址:https://blog.51cto.com/13578973/2425819

时间: 2024-10-02 03:13:23

JavaScript BOM Cookie 的使用的相关文章

httpOnly实现防止XSS时避免JavaScript读取cookie

如果cookie设置了HttpOnly标志,可以在发生XSS时避免JavaScript读取cookie,这也是HttpOnly被引入的原因. 实现方式: PHP中的设置     1.在php.ini中  session.cookie_httponly = true     2.在程序中全局设定:  <?php  ini_set("session.cookie_httponly", 1);  // or  session_set_cookie_params(0, NULL, NUL

Javascript操作cookie

从事web开发也有些日子了,cookie 是个啥差不多能说明白,可是实际自己一上手操作就是得去搜索(你们懂的),结果被鄙视了...所以就写一篇博文做为自己的学习笔记 什么是 Cookie "cookie 是存储于访问者的计算机中的变量.每当同一台计算机通过浏览器请求某个页面时,就会发送这个 cookie.你可以使用 JavaScript 来创建和取回 cookie 的值." - w3school cookie 是访问过的网站创建的文件,用于存储浏览信息,例如个人资料信息. 从JavaS

javascript删除Cookie的正确方法(转载)

原来一直以为只要设置javascript的document.cookie对象就能简单的在浏览器端设置和删除cookie值,网上很多文章也是这么教的,但是最近发现简单的设置javascript的document.cookie的值无法完全做到删除或更改cookie.偶然发现了一篇文章给出了正确的方法,这里贴出来. 使用JavaScript清理Cookie首先要找到该Cookie对应的Name对应的值,然后设置其为过期: 找到Cookie有下面方法: function getCookie2(name)

JavaScript 操作 Cookie

从事web开发也有些日子了,cookie 是个啥差不多能说明白,可是实际自己一上手操作就是得去搜索(你们懂的),结果被鄙视了...所以就写一篇博文做为自己的学习笔记,嘿嘿,博客的好处在此体现出来了. 什么是 Cookie “cookie 是存储于访问者的计算机中的变量.每当同一台计算机通过浏览器请求某个页面时,就会发送这个 cookie.你可以使用 JavaScript 来创建和取回 cookie 的值.” - w3school cookie 是访问过的网站创建的文件,用于存储浏览信息,例如个人

JavaScript创建cookie

创建一个欢迎cookie. 通过w3s文档的学习,终于把JavaScript的cookie欢迎页面扩清楚了.在这里与各位分享一下自己的cookie学习心得. ,希望对大家有所帮助.对于什么是cookie,cookie的各种官方解释我就不在这里解释了啊!直接介绍我demo了. 首先  我们要在页面加载的时候,直接调用欢迎页面.所以可以用onLoad 方法,onLoad这个方法,可以在每此加载页面的时候,最先调用. onLoad主动调用JavaScript服本checkCookie(). 下面是ch

javascript应用cookie的封装代码

javascript应用cookie的封装代码: 关于cookie的优缺点这里就不多介绍了,都是老生长谈了,不过对于cookie的操作可能很多学习者比较陌生,下面分享一个封装好的cookie操作代码,希望能够给需要的朋友带来一定的帮助. 代码如下: var cookie=new function(){ this.set=function(name,value,hours){ var life=new Date().getTime(); life+=hours*1000*60; var cooki

JavaScript中Cookie的用法

Javascript中Cookie主要存储于客户端的计算机中,用于存放已访问的站点信息,Cookie最大约为4k.以下实例主要用于页面在刷新时保存数据,具体的用法如下所示: <html> <head><title></title> </head> <body> <script type="text/javascript"> window.onload = function () { PersentVal

javascript操作cookie简单插件

javascript操作cookie简单插件:恰当灵活的使用cookie可以给用户带来诸多方便,尽管它一直被不少人士所诟病,但是它的应用还是无处不在,关于cookie这里就不多介绍了,具体可以参阅javascript如何操作cookie一章节,下面给出操作cookie的一个简单插件,代码如下: var cookie={ //创建cookie setCookie:function (name, value, iDay) { var oDate = new Date(); oDate.setDate

PHP的cookie与Javascript的cookie的关系

PHP 读写cookie的语句: setcookie("user", "Lilu", time()+3600); echo $_COOKIE["user"]; javascript读写cookie代码: function SetCookie(name,value)//两个参数,一个是cookie的名子,一个是值 { var Days = 30; //此 cookie 将被保存 30 天 var exp = new Date(); //new Da