热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

十二、Cookie

十二、Cookiecookie是从网站发送并存储在用户本地计算机上的一段数据。它们提供了一个持

十二、COOKIE

COOKIE 是从网站发送并存储在用户本地计算机上的一段数据。它们提供了一个持久的存储空间,允许网站在用户在页面之间移动或返回网站时记住他们。

创建 COOKIEs

COOKIEs 是通过给document.COOKIE对象分配一个名称-值对来创建的。它们仅限于存储字符串值。

document.COOKIE = "COOKIE1=myCOOKIE";

相同的对象用于检索 COOKIE 字符串。

console.log(document.COOKIE); // "COOKIE1=myCOOKIE"

要修改一个 COOKIE,你只需要给它分配一个新值。这将覆盖以前的 COOKIE。

document.COOKIE = "COOKIE1=first";

当另一个名称-值对被分配给COOKIE对象时,另一个 COOKIE 被自动创建。

document.COOKIE = "COOKIE2=second";

引用COOKIE对象检索一个字符串,该字符串包含所有 COOKIEs 的分号分隔列表。

console.log("document.COOKIE"); // "COOKIE1=first;COOKIE2=second"

通过使用 string 对象的split方法,可以从 COOKIE 字符串中提取每个名称-值对。方法返回包含拆分值的数组,这些值根据作为参数指定的分隔符进行拆分。

var dataList = document.COOKIE.split(";");

console.log(dataList[0]); // "COOKIE1=first"

console.log(dataList[1]); // "COOKIE2=second"

再次使用split可以将名称与值分开。

var pair = dataList[0].split("=");

console.log(pair[0] + " is " + pair[1]); // "COOKIE1 is first"

编码

COOKIE 的名称-值对不能包含空格、逗号或分号。为了确保不包含这些字符,可以使用全局escape方法对字符串进行 URL 编码。

document.COOKIE = "COOKIE1=" + escape("Foo Bar");

在 URL 编码格式中,空格被替换为%20。

console.log(document.COOKIE); // "COOKIE1=Foo%20Bar"

当读回 COOKIE 字符串时,unescape方法用于撤销编码。

console.log(unescape(document.COOKIE)); // "COOKIE1=Foo Bar"

到期日期

除了名称-值对之外,COOKIE 字符串还可以包含其他信息,比如 COOKIE 应该何时过期。默认情况下,COOKIE 的生命周期限于当前浏览器会话。当用户关闭窗口时,该会话结束,之后浏览器删除 COOKIE。使用内置的Date对象及其toGMTString方法,以下面的方式设置到期日期。通过将这个毫秒数加到由getTime方法返回的值上,这个 COOKIE 被设置为一小时后过期。

var myCOOKIE = "COOKIE1=first";

var date = new Date();

date.setTime(date.getTime() + (60*60*1000));

document.COOKIE = myCOOKIE + ";expires=" + date.toGMTString();

这个截止日期也提供了删除 COOKIEs 的方法。这是通过使用旧的到期日期重新创建同一个 COOKIE 来实现的,在本例中,到期日期是过去的一天。

var name = "COOKIE1";

var date = new Date();

date.setDate(date.getDate() - 1);

document.COOKIE = name + '=;expires=' + date.toGMTString();

请注意,只需要 COOKIE 的名称来标识要覆盖哪个 COOKIE。因此,值部分为空。

路径和域

为了访问 COOKIE,文档必须位于相同的域中,并且具有由 COOKIE 指定的相同路径。默认情况下,该路径是包含创建 COOKIE 的文档的文件夹的位置。以下示例说明了如何使 COOKIE 对给定域中的所有路径可见。

var myCOOKIE = "COOKIE1=first";

var path = "path=/";

document.COOKIE = myCOOKIE + ";" + path;

域默认为文档所在位置的主机部分,比如www.example.com。为了使 COOKIE 对该域的其他子域可用,可以省略www部分,如下例所示。

var domain = "domain=.example.com";

document.COOKIE = myCOOKIE + ";" +  domain + ";" + path;

域、路径和过期选项可以按任意顺序出现。请记住,一旦设置了这些可选参数,就不可能从 COOKIE 中检索它们。


推荐阅读
  • 深入解析:React与Webpack配置进阶指南(第二部分)
    在本篇进阶指南的第二部分中,我们将继续探讨 React 与 Webpack 的高级配置技巧。通过实际案例,我们将展示如何使用 React 和 Webpack 构建一个简单的 Todo 应用程序,具体包括 `TodoApp.js` 文件中的代码实现,如导入 React 和自定义组件 `TodoList`。此外,我们还将深入讲解 Webpack 配置文件的优化方法,以提升开发效率和应用性能。 ... [详细]
  • 本指南从零开始介绍Scala编程语言的基础知识,重点讲解了Scala解释器REPL(读取-求值-打印-循环)的使用方法。REPL是Scala开发中的重要工具,能够帮助初学者快速理解和实践Scala的基本语法和特性。通过详细的示例和练习,读者将能够熟练掌握Scala的基础概念和编程技巧。 ... [详细]
  • 本文介绍了一种利用PHP cURL库高效提取Sohu邮箱联系人列表的方法。通过设置错误报告级别、定义Cookie文件路径等关键步骤,确保了代码的稳定性和可靠性。经过实际测试,该方法在2012年3月24日被验证为有效,能够快速准确地获取联系人信息。此外,文章还提供了详细的代码示例和注意事项,帮助开发者更好地理解和应用这一技术。 ... [详细]
  • 大类|电阻器_使用Requests、Etree、BeautifulSoup、Pandas和Path库进行数据抓取与处理 | 将指定区域内容保存为HTML和Excel格式
    大类|电阻器_使用Requests、Etree、BeautifulSoup、Pandas和Path库进行数据抓取与处理 | 将指定区域内容保存为HTML和Excel格式 ... [详细]
  • 在PHP中如何正确调用JavaScript变量及定义PHP变量的方法详解 ... [详细]
  • 在尝试对 QQmlPropertyMap 类进行测试驱动开发时,发现其派生类中无法正常调用槽函数或 Q_INVOKABLE 方法。这可能是由于 QQmlPropertyMap 的内部实现机制导致的,需要进一步研究以找到解决方案。 ... [详细]
  • 技术分享:使用 Flask、AngularJS 和 Jinja2 构建高效前后端交互系统
    技术分享:使用 Flask、AngularJS 和 Jinja2 构建高效前后端交互系统 ... [详细]
  • 属性类 `Properties` 是 `Hashtable` 类的子类,用于存储键值对形式的数据。该类在 Java 中广泛应用于配置文件的读取与写入,支持字符串类型的键和值。通过 `Properties` 类,开发者可以方便地进行配置信息的管理,确保应用程序的灵活性和可维护性。此外,`Properties` 类还提供了加载和保存属性文件的方法,使其在实际开发中具有较高的实用价值。 ... [详细]
  • 优化Vite 1.0至2.0升级过程中遇到的某些代码块过大问题解决方案
    本文详细探讨了在将项目从 Vite 1.0 升级到 2.0 的过程中,如何解决某些代码块过大的问题。通过具体的编码示例,文章提供了全面的解决方案,帮助开发者有效优化打包性能。 ... [详细]
  • 基于Net Core 3.0与Web API的前后端分离开发:Vue.js在前端的应用
    本文介绍了如何使用Net Core 3.0和Web API进行前后端分离开发,并重点探讨了Vue.js在前端的应用。后端采用MySQL数据库和EF Core框架进行数据操作,开发环境为Windows 10和Visual Studio 2019,MySQL服务器版本为8.0.16。文章详细描述了API项目的创建过程、启动步骤以及必要的插件安装,为开发者提供了一套完整的开发指南。 ... [详细]
  • 本文探讨了使用JavaScript在不同页面间传递参数的技术方法。具体而言,从a.html页面跳转至b.html时,如何携带参数并使b.html替代当前页面显示,而非新开窗口。文中详细介绍了实现这一功能的代码及注释,帮助开发者更好地理解和应用该技术。 ... [详细]
  • 在Android应用开发中,实现与MySQL数据库的连接是一项重要的技术任务。本文详细介绍了Android连接MySQL数据库的操作流程和技术要点。首先,Android平台提供了SQLiteOpenHelper类作为数据库辅助工具,用于创建或打开数据库。开发者可以通过继承并扩展该类,实现对数据库的初始化和版本管理。此外,文章还探讨了使用第三方库如Retrofit或Volley进行网络请求,以及如何通过JSON格式交换数据,确保与MySQL服务器的高效通信。 ... [详细]
  • 本文总结了JavaScript的核心知识点和实用技巧,涵盖了变量声明、DOM操作、事件处理等重要方面。例如,通过`event.srcElement`获取触发事件的元素,并使用`alert`显示其HTML结构;利用`innerText`和`innerHTML`属性分别设置和获取文本内容及HTML内容。此外,还介绍了如何在表单中动态生成和操作``元素,以便更好地处理用户输入。这些技巧对于提升前端开发效率和代码质量具有重要意义。 ... [详细]
  • 本文详细介绍了 Python 中字符串处理的各种技巧,包括查找、复制、替换、删除、截取、连接、比较、包含检测及大小写转换等操作。特别强调了如何使用 `strip()`、`lstrip()` 和 `rstrip()` 方法去除字符串中的空格和特殊符号,以及如何通过简单的赋值语句实现字符串的复制。此外,还提供了丰富的示例代码,帮助读者更好地理解和应用这些技巧。 ... [详细]
  • 深入浅出解析HTTP协议的核心功能与应用
    前言——协议是指预先设定的通信规则,确保双方能够按照既定标准进行有效沟通,从而实现准确的信息交换。例如,驯兽师通过拍手使动物坐下,这实际上是一种预设的协议。本文将详细探讨HTTP协议的核心功能及其广泛应用,解析其在现代网络通信中的重要作用。 ... [详细]
author-avatar
kuqu00
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有