Cookie

本文详细介绍了Cookie的工作原理,包括它与本地存储的区别、操作方法、在PHP中的应用,以及如何用Cookie跟踪用户身份和记录登录状态。同时,讨论了Session在实现会话管理中的作用,并解释了HTTP协议的无状态特性。

Cookie是HTTP协议中规定的一个请求头字段 ,用于在浏览器与服务器之间互相传递数据。

一,cookie 与 本地存储的区别

Cookie 和storage 很像 , 但是有区别。

1.cookie的存储量很小,一般大小不超过4kb,storage 5M。
cookie的存储量小是因为cookie本身不是做存储的,主要是用来跟踪用户身份的。

2.cookie需要服务器环境
http的特点是无状态的,cookie用来跟踪用户身份。
cookie可以在客户端与服务端来回传输。

3.sessiongStorage 数据不共享 , localStorage数据共享 ,cookie是数据共享的 (同一个服务器)

二,cookie的操作

存 setItem()
取 getItem()
删 removeItem() clear()

1.存

document.cookie = 'username=xiaoming';
document.cookie = 'age=20';

2.取
程序会取出所有的cookie数据, 程序会自动添加 分号 + 空格 连接多组数据

console.log( document.cookie ); //只能一起取,不能取单条数据

3.删

因为cookie并没有提供好用的方法, 所以需要自己去封装(setCookie , getCookie ,removeCookie)

cookie 默认是临时性存储的, 一旦页面关闭了,cookie的数据就消失了。

想要多存储一会儿, 加一个过期时间。

var date = new Date();
date.setDate( date.getDate() + 5)

document.cookie = 'username=xiaoming;expires' +date;

三,封装

function setCookie(key,value,time){
	var date = new Date();
	date.setDate( date.getDate() + time);
	document.cookie = ' ${key} = ${value} ; expires=${date}';
}

setCookie('username','xiaoming' , 5);
setCookie('age','20' );
function getCookie(key){
	var arr1 = document.cookie.splite(';');
	for(var i=0;i<arr1.length;i++){
		var arr2 = arr1[i].split('=');
		if( key == arr2[0]){
			return decodeURIComponent(arr2[1]);//防止乱码,来解码
			
		}
	}
}

console.log(getCookie('username'));
function removeCookie(key){
	setCookie(key,'',-1);
}

四,php中cookie的应用

php中获取传输过来的cookie

echo $_cookie['username'];

setcookie('gender','man');

setcookie('age','') //age等于空

Application 中的 HttpOnly 是只有后端能用的cookie

domain参数
解决跨域
www.a.com domain=a.com
sports.a.com domain=a.com
cookie在一级域名和二级域名之间是有跨域问题的,domain设置成相同的来解决。

path参数
子文件夹能访问父文件夹数据

当前这个目录下的所有cookie是共享的
比如给goods文件下设置了cookie , / 下能获取cookie吗 ?不能 , 在goods设置cookie的时候,指定path = /

Secure参数 是 https的s
SameSite 与安全相关的

五,跟踪用户身份,记录登录状态

//存
setcookie('gender','男',null ,null ,null ,null , true);

//删
setcookie('age','');

//PHP中获取传输过来的cookie , 取
echo $_COOKIE['username'];

六,Session

怎么实现凭证(生成二维码) cookie + session (临时会话,也是存储数据的,但是只能在后端)

要想使用session , 必须先开启

session_start();

$_SESSION[‘username’] = $name; //设置session

setcookie( session_name(),session_id() ,time() + 3600245, ‘/’ );

七,HTTP协议的无状态

前端解析域名 ,建立与服务器的TCP连接 ,发送请求, 得到数据 ,断开连接 。
因为断开了连接 ,导致服务器与浏览器之间互相不知道对方的情况,这种就叫做无状态 。

所谓的无状态指的就是连接最终会被断开 。

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值