cookie 详解

cookie 详解

HTTP Cookie(也叫 Web Cookie 或浏览器 Cookie)是服务器发送到用户浏览器并保存在本地的一小块数据,它会在浏览器下次向同一服务器再发起请求时被携带并发送到服务器上。通常,它用于告知服务端两个请求是否来自同一浏览器,如保持用户的登录状态。Cookie 使基于无状态的 HTTP 协议记录稳定的状态信息成为了可能。

Cookie 曾一度用于客户端数据的存储,因当时并没有其它合适的存储办法而作为唯一的存储手段,但现在随着现代浏览器开始支持各种各样的存储方式,Cookie 渐渐被淘汰。由于服务器指定 Cookie 后,浏览器的每次请求都会携带 Cookie 数据,会带来额外的性能开销(尤其是在移动环境下)。新的浏览器 API 已经允许开发者直接将数据存储到本地,如使用 Web storage API (本地存储和会话存储)或 IndexedDB 。

cookie 的应用

Cookie 用于以下几个方面:

  • 购物车(网购)
  • 自动登录(登录账号时的自动登录)
  • 精准广告
  • 平常浏览网页时有时会推出商品刚好是你最近浏览过,买过的类似东西,这些是通过 cookie 记录的。
  • 记住登录状态

cookie 的构成

  • 名称:一个唯一确定 cookie 的名称,部分大小写,cookie 的名字必须是经过 URL 编码的,一般可以采用某个前缀在加上当前时间的做法,这样的话名称能够确保是唯一的,也比较方便。
  • 值:存储在 cookie 中的字符串值,必须经过被 URL 编码
  • 域:对于哪个域是有效的,如果没有设置的话,默认来自设置 cookie 的那个域,在上诉例子中就是.Mozilla.org
  • 失效时间:表示 cookie 何时应该被删除的时间戳,这个日期是 GMT 格式的日期,如果设置是以前的时间,cookie 会被立刻删除。
  • 路径:指定域中的那个路径,应该想服务器发送 cookie,/ 表示没有限制
  • 安全标志:指定以后,cookie 只有在使用 SSL 连接的时候才可以发送到服务器。

chrome 的实际截图如: 

cookie 的管理

cookie 可以通过服务器端返回响应头Set-Cookie: <cookie名>=<cookie值>来修改浏览器的端的 cookie,当然这个就不展开了,每种后台语言都很容易处理。

客户端处理 cookie,可以用原生的 js 来控制,另外也可以通过js-cookie插件。

添加 cookie

引入脚本

<script src="https://cdn.jsdelivr.net/npm/[email protected]/src/js.cookie.min.js"></script>Click to copy

添加 cookie

// Create a cookie, valid across the entire site:
Cookies.set(‘name‘, ‘value‘);

// Create a cookie that expires 7 days from now, valid across the entire site:
Cookies.set(‘name‘, ‘value‘, { expires: 7 });

// Create an expiring cookie, valid to the path of the current page:
Cookies.set(‘name‘, ‘value‘, { expires: 7, path: ‘‘ });Click to copy

读取 cookie

读取具名的 cookie

Cookies.get(‘name‘); // => ‘value‘
Cookies.get(‘nothing‘); // => undefinedClick to copy

读取所有的 cookie

Cookies.get(); // => { name: ‘value‘ }Click to copy

移除 cookie

Cookies.set(‘name‘, ‘value‘, { path: ‘‘ });
Cookies.remove(‘name‘); // fail!
Cookies.remove(‘name‘, { path: ‘‘ }); // removed!Click to copy

json 数据

Cookies.set(‘name‘, { foo: ‘bar‘ });
Cookies.get(‘name‘); // => ‘{"foo":"bar"}‘
Cookies.get(); // => { name: ‘{"foo":"bar"}‘ }

Cookies.getJSON(‘name‘); // => { foo: ‘bar‘ }
Cookies.getJSON(); // => { name: { foo: ‘bar‘ }Click to copy

设置过期时间

Cookies.set(‘name‘, ‘value‘, { expires: 365 });
Cookies.get(‘name‘); // => ‘value‘
Cookies.remove(‘name‘);Click to copy

设置路径

Cookies.set(‘name‘, ‘value‘, { path: ‘‘ });
Cookies.get(‘name‘); // => ‘value‘
Cookies.remove(‘name‘, { path: ‘‘ });Click to copy

设置 domain

Cookies.set(‘name‘, ‘value‘, { domain: ‘subdomain.site.com‘ });
Cookies.get(‘name‘); // => undefined (need to read at ‘subdomain.site.com‘)Click to copy

cookie 的相关限制

  • IE6 以及更低版本限制每个域名最多 20 个 cookie
  • IE7 之后的版本每个域名最多 50 个。
  • Firefox 限制每个与最多 50 个 cookie(未确认)
  • Safari 和 Chrome 对于每个域的 cookie 数量限制没有硬性规定。
  • 大多数浏览器 4096B 的长度限制,为了兼容多种浏览器,最好将长度限制在 4095B 以内.
  • 每个 domain 最多只能有 20 条 cookie
  • cookie 会随着 http 请求发送到后台,增加了额外的请求流量

总结

已经被淘汰的东西了,请使用 Web storage API (本地存储和会话存储)或 IndexedDB

原文地址:https://www.cnblogs.com/NightTiger/p/10277029.html

时间: 2024-08-03 12:16:49

cookie 详解的相关文章

ASP.NET 操作Cookie详解 增加,修改,删除

Cookie,有时也用其复数形式Cookies,指某些网站为了辨别用户身份而储存在用户本地终端上的数据(通常经过加密).定义于RFC2109.它是网景公司的前雇员Lou Montulli在1993年3月的发明. 服务器可以利用Cookies包含信息的任意性来筛选并经常性维护这些信息,以判断在HTTP传输中的状态.Cookies最典型的应用是判定注册用户是否已经登录网站,用户可能会得到提示,是否在下一次进入此网站时保留用户信息以便简化登录手续,这些都是Cookies的功用.另一个重要应用场合是“购

Cookie 详解以及实现一个 cookie 操作库

Cookie 详解以及实现一个 cookie 操作库 cookie 在前端有着大量的应用,但有时我们对它还是一知半解.下面来看看它的一些具体的用法 Set-Cookie 服务器通过设置响应头来设置客户端的 cookie,形如: Set-Cookie: <cookie名>=<cookie值> 可以同时添加多个 Set-Cookie,从而设置多个 cookie 的值. Set-Cookie 有几个可选项: Expires/Max-Age Expires/Max-Age 可以设置过期时间

Cookie详解

1.Cookie和Session机制详解 2.细说Cookie

怎么设置cookie,怎么设置cookie以及删除cookie和cookie详解

在操作cookie之前,先来看一下cookie长什么样. 可以看到,cookie是一个个键值对(“键=值”的形式)加上分号空格隔开组合而成, 形如: "name1=value1; name2=value2; name3=value3" 设置cookie: 1 /** 2 * 设置cookie 3 * @param name cookie的名称 4 * @param value cookie的值 5 * @param day cookie的过期时间 6 */ 7 var setCooki

JavaEE基础(04):会话跟踪技术,Session和Cookie详解

本文源码:GitHub·点这里 || GitEE·点这里 一.会话跟踪 1.场景描述 比如登录某个购物网站,身份识别成功后,在网站下单,支付 等操作,这些操作中当前登录用户信息必须是共享的,这样这些操作结果才能和登录用户做关联. 2.概念简介 可以把会话理解为客户端与服务器之间的一次交互,在一次交互中可能会包含多次请求和响应.在JavaWeb中,从客户端向服务器发出第一个请求开始,会话就开始了,直到客户端关闭浏览器会话结束.在一个会话的多个请求中共享数据,这就是会话跟踪技术. 二.Cookie用

session,cookie 详解

会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话.常用的会话跟踪技术是Cookie与Session.Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份. 本章将系统地讲述Cookie与Session机制,并比较说明什么时候不能用Cookie,什么时候不能用Session. 1.1  Cookie机制 在程序中,会话跟踪是很重要的事情.理论上,一个用户的所有请求操作都应该属于同一个会话,而另一个用户的所有请求操作则应该属于另一个

[转自脚本之家] Javascript cookie 详解

cookie概述 在上一节,曾经利用一个不变的框架来存储购物栏数据,而商品显示页面是不断变化的,尽管这样能达到一个模拟 全局变量的功能,但并不严谨.例如在导航框架页面内右击,单击快捷菜单中的[刷新]命令,则所有的JavaScript变量都会丢失.因此,要实现严格的 跨页面全局变量,这种方式是不行的, JavaScript中的另一个机制:cookie,则可以达到真正全局变量的要求. cookie是浏览器提供的一种机制,它将document 对象的cookie属性提供给JavaScript.可以由J

【转】session和cookie详解

会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话.常用的会话跟踪技术是Cookie与Session.Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份. 本章将系统地讲述Cookie与Session机制,并比较说明什么时候不能用Cookie,什么时候不能用Session. 1.1  Cookie机制 在程序中,会话跟踪是很重要的事情.理论上,一个用户的所有请求操作都应该属于同一个会话,而另一个用户的所有请求操作则应该属于另一个

JS中document.cookie详解

什么是cookie? cookie 是存储于访问者的计算机中的变量.每当同一台计算机通过浏览器请求某个页面时,就会发送这个 cookie.你可以使用 JavaScript 来创建和取回 cookie 的值. 设置cookie 每个cookie都是一个名/值对,可以把下面这样一个字符串赋值给document.cookie: document.cookie="userId=828"; document.cookie看上去就像一个属性,可以赋不同的值.但它和一般的属性不一样,改变它的赋值并不