使用cookie
概述
虽说在现代Web开发过程中讨论Cookie有些不合时宜,但是这是开发人员如今可以使用的最古老、最稳定的客户端存储形式。当然,我们并不推荐使用Cookie,只是说它是一种选择。
Cookie于1994年在Netscape浏览器的Beta版本中被引入。它通过随HTTP请求和响应一起发送的HTTP header值发挥作用。众所周知,每当浏览器请求一个资源,就会有一组header随请求一起发送。那些header包含各种类型的数据,其中包括有关浏览器的信息以及它需要的数据形式。反过来,服务器也会往回发送header。
Cookie使用HTTP header发送,具体来说是名为Cookie的HTTP header,由浏览器发送到服务器,又从服务器发送到浏览器。你会发现这里有个问题。如果使用客户端存储的一个好处是不用通过网络发送数据,那么来回发送Cookie不是反其道而行之吗?这也是上面提到的不建议使用Cookie的另一个原因。
默认情况下,浏览器没有限制可以拥有的Cookie数量。以前,每个域名最多只能有20个Cookie,但如今的浏览器似乎丢掉了这个限制。
Cookie对应唯一的域名。这意味着在foo.com上设置的Cookie值不能用于goo.com.这样很好,因为你不会希望其他网站影响你在自己的网站上使用Cookie。
Cookie也可以对应唯一的子域名。例如,app.foo.com是Foo网站的一个独立的子域名。你可以创建只有app.foo.com可以读取的Cookie,也可以创建www.foo.com和app.foo.com都可以读取的Cookie。
更复杂的做法是创建只对特定路径有效的Cookie。所以,你可能希望创建只有foo.com/app可见的Cookie。
最后,你可以创建只对网站的安全(HTTPS)版本有效的Cookie。显然,选用哪种方案取决于应用程序的用途,以及你认为哪里需要Cookie值。
除了设置Cookie出现的地方,还可以指定Cookie的有效时间。
- 只在当前会话期间存在的Cookie(从根本上说是直到浏览器关闭)
- 永远存在的Cookie
- 存在特定时长的Cookie
- 特定时间点之后失效的Cookie
使用方法
Cookie没有API。要使用Cookie,只需在代码中访问document.cookie对象。例如,可以像下面一样创建一个Cookie.
document.cookie = "name=zuckjet"
Cookie值必须符合URL编码规则,这意味着如果想动态定义Cookie,那么就需要使用类似encodeURIComponent的辅助函数。
下面这段代码世家还是那个创建了两个Cookie,而不是一个。
document.cookie = "name=zuckberg";
document.cookie = "age=18";
在Cookie值后面使用一个分号可以追加元数据:
documen.cookie = "name=zuckjet;expires=xxx;domain=xxx"
当我们不指定元数据时,Cookie默认只对当前域名的当前路径有效,有效期是当前会话。
读取Cookie
读取Cookie多少简单一些--这取决于你对字符串的解析程度。没有API可以用来获取一个Cookie。不过,你只需要简单地读取document.cookie就可以了。这样你可以获取特定网站的Cookie。比如,segmentfault的cookie值如下:
读取一个Cookie就意味着将字符串解析成多个有分号分隔的部分。另外还要注意,你无法访问任何元数据。通过document.cookie值无法获取这类信息。
删除Cookie
要删除Cookie,只需要将其过期时间设置成过去的时间即可。从技术上讲,这个时间值无关紧要,但名称必须与你想要删除的Cookie名称一致。
使用cookie的更多相关文章
- 超大 Cookie 拒绝服务攻击
有没有想过,如果网站的 Cookie 特别多特别大,会发生什么情况? 不多说,马上来试验一下: for (i = 0; i < 20; i++) document.cookie = i + '= ...
- IE10、IE11 User-Agent 导致的 ASP.Net 网站无法写入Cookie 问题
你是否遇到过当使用一个涉及到Cookie操作的网站或者管理系统时,IE 6.7.8.9下都跑的好好的,唯独到了IE10.11这些高版本浏览器就不行了?好吧,这个问题码农连续2天内遇到了2次.那么,我们 ...
- 解决cookie跨域访问
一.前言 随着项目模块越来越多,很多模块现在都是独立部署.模块之间的交流有时可能会通过cookie来完成.比如说门户和应用,分别部署在不同的机器或者web容器中,假如用户登陆之后会在浏览器客户端写入c ...
- jquery插件的用法之cookie 插件
一.使用cookie 插件 插件官方网站下载地址:http://plugins.jquery.com/cookie/ cookie 插件的用法比较简单,直接粘贴下面代码示例: //生成一个cookie ...
- 一个诡异的COOKIE问题
今天下午,发现本地的测试环境突然跑不动了,thinkphp直接跑到异常页面,按照正常的排错思路,直接看thinkphp的log 有一条 [ error ] [2]setcookie() expects ...
- [转载]Cookie/Session的机制与安全
Cookie和Session是为了在无状态的HTTP协议之上维护会话状态,使得服务器可以知道当前是和哪个客户在打交道.本文来详细讨论Cookie和Session的实现机制,以及其中涉及的安全问题. 因 ...
- jquery.cookie的使用
今天想到了要为自己的影像日记增加赞的功能,并且需要用到cookie. 记得原生的js操作cookie也不是很麻烦的,但似乎jquery更简单,不过相比原生js,需要额外引入2个文件,似乎又不是很好,但 ...
- 跨域问题,前端主动向后台发送cookie
跨域是什么? 从一个域名的网页访问另一个域名的资源,就会出现跨域.只要协议.端口.域名有一个不同就会出现跨域 例如: 1.协议不同 http://www.baidu.com:80 和 https:/ ...
- 【流量劫持】沉默中的狂怒 —— Cookie 大喷发
精简版:http://www.cnblogs.com/index-html/p/mitm-cookie-crack.html 前言 上一篇文章 讲解了如何借助前端技术,打造一个比 SSLStrip 更 ...
- 好好了解一下Cookie
Cookie的诞生 由于HTTP协议是无状态的,而服务器端的业务必须是要有状态的.Cookie诞生的最初目的是为了存储web中的状态信息,以方便服务器端使用.比如判断用户是否是第一次访问网站.目前最新 ...
随机推荐
- 论文翻译——Attention Is All You Need
Attention Is All You Need Abstract The dominant sequence transduction models are based on complex re ...
- CCS|ANSI|中华人民共和国标准化法|国标|ISO|IEC|Ieeexplore|
国家的标准的有效期,标龄是5年.强制性标准是是指为保障人体的健康.人身.财产安全的标准和法律.行政法规定强制执行的标准,如药品标准.食品卫生标准. CCS:分类法简写图 国际标准,比如美国国家标准AN ...
- Eclipse 快捷键(mac)
Option + Command + X: 运行Command + O:显示大纲Command + 1:快速修复Command + D:删除当前行Command + Option + ↓:复制当前行到 ...
- C#函数的基础应用
C#函数的基础应用 函数之前的知识回顾 数据类型--变量常量--运算符表达式--语句(顺序,分支,循环)--数组--函数 程序里的函数:能完成一个相对独立功能的代码模块. 数学里的函数:高度抽象. 函 ...
- 个人云主机 博客上线 家用宽带-树莓派2-certbot-docker 运行环境简介
https://blog.cuidp.top/ 博客主页,目前刚建好,没什么数据 服务是 https://github.com/TryGhost/Ghost 现插件是https://github.co ...
- CPU时间分片、多线程、并发和并行
1.CPU时间分片.多线程? 如果线程数不多于CPU核心数,会把各个线程都分配一个核心,不需分片,而当线程数多于CPU核心数时才会分片. 2.并发和并行的区别 并发:当有多个线程在操作时,如果系统只有 ...
- Nginx笔记总结七:root和alias文件路径配置
1. root path 配置段:http.server.location.if location ~ ^/weblogs/ { root /data/weglogs/www.ttlsa.com; a ...
- java处理数据库date类型数据
1.使用Date类和TimeStamp类的valueOf转换时间 Date.valueOf(); TimeStamp.valueOf(); 如果这两种转换直接用在sal语句上,那么最外层要 ...
- [洛谷P4549] [模板] 裴蜀定理
18.10.03模拟赛T1. 出题人xcj(Mr.Handsome)十分良心,给了一道送分题...... 互测题好久没有出现送分题了.xcj真棒. 题目传送门 幸亏之前看过,否则真的是送分题都拿不到. ...
- 《JavaScript算法》常见排序算法思路与代码实现
冒泡排序 通过相邻元素的比较和交换,使得每一趟循环都能找到未有序数组的最大值或最小值. 最好:O(n),只需要冒泡一次数组就有序了. 最坏: O(n²) 平均: O(n²) *单项冒泡 functio ...