cookies是由网络服务器存储在你电脑硬盘上的一个txt类型的小文件,它和你的网络浏览行为有关,所以存储在你电脑上的cookies就好像你的一张身份证,你电脑上的cookies和其他电脑上的cookies是不一样的;cookies不能被视作代码执行,也不能成为病毒,所以它对你基本无害。cookies的作用主要是,当你访问了某些网页,并且对网页的一些设置进行修改,cookies就能跟踪并记录到这些修改,当你下一次访问这个网页的时候,这个网页会分析你电脑上的cookies,一般用于登录缓存信息和购物车缓存
特点
cookie必须运行在服务器的环境下(开启服务器)
cookie的容量: 5kt
cookie存储的数据类型:字符串
Cookie本地数据储存,公共存储空间,之前会保存在c盘下,现在会被隐藏
Cookie只能作为临时存储,当浏览器关闭,就会丢失
Cookie的作用域为当前域,有文件夹路径的区分,域中的文件夹储存
http://www.xxx.com/
在这个域中任何文件都可以写cookie,存储的位置都是以这个域作为存储空间,别的域不可以访问
http://www.xxx.com/index.html
为顶级域无法访问 http://www.xxx.com/paimai/index.html
顶级域无法向下访问,可以向上访问
一-个域名下存放的cookie的个数是有限制的,不同浏览器
存放的个数不一样,cookie能 存储的条目数为:50条。
如果想长时间存放一个cookie,同时需要设置一个过期时间
Cookie数据跳转到当前域所在另外页面时可以获取前面cookie存储的数据内容(js代码都是针对当前页面的)
缺点
在浏览器中查看已经储存的cookie
浏览器查看cookie F12 =>Application =>
一个网站可以创建多个cookie,不同的cookie可以拥有不同的值,名字相同会覆盖掉
//单个设置cookie
document.cookie="name=nihao";
document.cookie="name=zhangsan";//会覆盖掉上一个cookie
//获取单个cookie
console.log(document.cookie);
在不设置过期时间的cookie在未关闭浏览器的时候会一直存放,浏览器关闭,就会丢失掉。设置过期时间必须要用date.toUTCString()
var date=new Date();
date.setMinutes(6);
document.cookie="name=xietian;expires="+date.toUTCString();
getCookie(){
return document.cookie.split(/;\s*/).reduce((value,item)=>{
var arr=item.split("=");
value[arr[0]]=isNaN(arr[1]) ? arr[1] : Number(arr[1]);
return value;
},{
})
}
getCookieValue(){
return getCookie()[key];
}
setCookie(key,value,date){
if(!date){
document.cookie=`${
key}=${
value}`;
return;
}
document.cookie=`${
key}=${
value};expires=${
date.toUTCString()}`;
}
setCookies(obj,date){
for(var key in obj){
Utils.setCookie(key,obj[key],date);
}
}
removeCookie(key){
setCookie(key,"",new Date());
}
clearCookie(){
for(var key in Utils.getCookie()){
removeCookie(key);
}
}
类似于cookie 储存量比cookie更大,web storage有自己的方法,不用像cookie需要自己封装,本质为cookie的进阶版
web storage有两个储存数据的接口:
localStorage 和 sessionStorage都是window对象的属性
localStorage
本地存储,用于持久化的本地存储,除非主动删除数据,否则数据是永远不会过期的;
sessionStorage
会话存储,用于本地存储一个会话 (session)中的数据,这些数据当在关闭浏览器后数据也随之销毁。
localStorage持久化存储,sessionStorage临时存储
方法 | 功能 |
---|---|
localStorage(sessionStorage).setItem | 存储数据信息到本地 |
localStorage(sessionStorage).getItem | 读取本地存储信息 |
localStorage(sessionStorage).removeItem | 删除指定key本地存储的值 |
localStorage(sessionStorage).clear | 清空网站在本地保存的所有数据的 |
setItem():在本地存储中以key键/值的方式存储数据
getItem():获取本地存储中的数据
localStorage.setItem("name","xietian");
localStorage.getItem("name")
//也可以直接添加对象的方式设置
localStorage.name="xietian";
console.log(localStorage.name);
removeItem():删除指定key本地存储的值
clear():清空网站在本地保存的所有数据的
localStorage.removeItem("name");//删除某个数据
localStorage.clear();//清除所有数据
储存数组数据的时候使用
var arr=[1,2,3];
localStorage.arr=JSON.stringify(arr);
var arr=JSON.parse(localStorage.arr);
console.log(arr);
cookie数据始终在同源的http请求中携带(即使不需要),即cookie在浏览器和服务器间来回传递。而sessionStorage和localStorage不会自动把数据发给服务器,仅在本地保存。cookie数据还有路径(path)的概念,可以限制cookie只属于某个路径下。
存储大小限制也不同,cookie数据不能超过4k,同时因为每次http请求都会携带cookie,所以cookie只适合保存很小的数据,如会话标识。sessionStorage和localStorage 虽然也有存储大小的限制,但比cookie大得多,可以达到5M或更大。
数据有效期不同,sessionStorage:仅在当前浏览器窗口关闭前有效,自然也就不可能持久保持;localStorage:始终有效,窗口或浏览器关闭也一直保存,因此用作持久数据;cookie只在设置的cookie过期时间之前一直有效,即使窗口或浏览器关闭。
作用域不同,sessionStorage不在不同的浏览器窗口中共享,即使是同一个页面;localStorage 在所有同源窗口中都是共享的;cookie也是在所有同源窗口中都是共享的。
Web Storage 支持事件通知机制,可以将数据更新的通知发送给监听者。
Web Storage 的 api 接口使用更方便。
XSS攻击全称跨站脚本攻击,是为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS,XSS是一种在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。
能被XSS攻击需要以下两点:
一、需要向web页面注入恶意代码;
二、这些恶意代码能够被浏览器成功的执行。
利用对文本框的内容进行处理 可以预防此类事案发生
var str= `