cookie

本文详细解析了Cookie的概念、作用、安全性及不同类型,包括会话Cookie和持久Cookie。探讨了Cookie在不同浏览器中的实现差异,以及第三方Cookie的工作原理。同时,提供了简单的Cookie读取和设置函数。

https://www.cnblogs.com/zhuanzhuanfe/p/8010854.html

http://www.cnblogs.com/Darren_code/archive/2011/11/24/Cookie.html

 

 

1. cookie是什么?

  Cookie是保存在客户端中的一小段文本信息,存储方式内存和硬盘(Expires参数),下次访问同一地址的时候,只要cookie没有失效,浏览器就会将其信息再次发给服务器。

2. cookie解决问题?

  因为http协议是无状态的,对于同一个浏览器发出的多个请求,web服务器是无法区分来源的。cookie解决了这个问题。

3. cookie 在不同浏览器中的差异

浏览器的类别单域名cookie的数量上限单个cookie的容量上限cookie的总上限说明
ie65040954095当cookie的数量超过的时候,会踢出之前的生成的cookie,保存最新的cookie的值的
ie75040954095同上
ie85040954095同上
ie95040954095同上
firefox1215040974097同上
chrome17160~17040974097同上
Safari没有限制40974097 

4. cookie的安全性

  cookie是不安全的,因为他可以被用户篡改。同时由于cookie存储大量的信息,一旦这些信息泄露出来,也是危害很大的,所以,我们要慎用cookie。

  客服端每次访问服务端都会携带cookie,cookie容易被人拦截,所有的session信息被公开。即使加密也与事无补,因为拦截者并不需要知道cookie的意义,他只要原样转发cookie就可以达到目的了。

  所以:cookie不要保存机密信息,让服务端来确保用户信息安全。

5. 

  

  

如图所示,用户首次访问服务器,服务器会返回一个独一无二的识别码;id=23451,这样服务器可以用这个码跟踪记录用户的信息,(购物历史,地址信息等)。

cookie可以包含任意的信息,不仅仅是id,客户端会记录服务器返回来的Set-Cookie首部中的cookie内容。并将cookie存储在浏览器的cookie数据库中,当用户访问同一站点时,浏览器就会挑选当时该站点颁发的id=XXX的身份证(cookie),并在Cookie请求首部发送过去。

6. cookie的类型

可以按照过期时间分为两类:会话cookie和持久cookie。会话cookie是一种临时cookie,用户退出浏览器,会话Cookie就会被删除了,持久cookie则会储存在硬盘里,保留时间更长,关闭浏览器,重启电脑,它依然存在,通常是持久性的cookie会维护某一个用户周期性访问服务器的配置文件或者登录信息。

持久cookie 设置一个特定的过期时间(Expires)或者有效期(Max-Age)到了指定时间以后,浏览器就不再保留这个 Cookie

Set-Cookie: id=a3fWa; Expires=Wed, 21 Oct 2019 07:28:00 GMT;

7. 第三方cookie

  通常cookie的域和浏览器地址的域匹配,这被称为第一方cookie。那么第三方cookie就是cookie的域和地址栏中的域不匹配,这种cookie通常被用在第三方广告网站。为了跟踪用户的浏览记录,并且根据收集的用户的浏览习惯,给用户推送相关的广告。

8. 简易cookie读取函数

   alert(typeof document.cookie)  结果是 string,曾经我以为是array,还闹过笑话

function getCookie(c_name){ 
        var cookie = document.cookie; 
        if (cookie.length>0){ 
                c_start = cookie.indexOf(encodeURIComponent(c_name) + "="); 
                if (c_start!=-1){ 
                        c_start = c_start + c_name.length+1; 
                        c_end = cookie.indexOf(";",c_start); 
                        if (c_end==-1) c_end = cookie.length; 
                        return decodeURIComponent(cookie.substring(c_start,c_end)) 
            } 
          } 
        return "" 
} 
function setCookie(c_name,value,expiredays){ 
        var exdate = new Date() 
        exdate.setDate(exdate.getDate()+expiredays); 
        document.cookie = encodeURIComponent(c_name)+ "=" + encodeURIComponent(value)+ 
                ((expiredays==null) ? "" : ";expires="+exdate.toGMTString()); 
}

9.  浏览器可以设置不接受 Cookie,也可以设置不向服务器发送 Cookie。

  window.navigator.cookieEnabled属性返回一个布尔值,表示浏览器是否打开 Cookie 功能。

  document.cookie属性返回当前网页的 Cookie。

10.  服务器收到浏览器发来的 Cookie 时,有两点是无法知道的。

  • Cookie 的各种属性,比如何时过期。
  • 哪个域名设置的 Cookie,到底是一级域名设的,还是某一个二级域名设的。

11. 虎牙登录前的cookie

 虎牙登录后的cookie

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值