当前位置: 首页 > Web前端 > HTML

优秀程序员的web前端教程分享新手应该知道的cookie知识!

时间:2023-04-02 21:15:33 HTML

程序员好Web前端教程分享新手应该知道的Cookie知识!  1。cookies的出现  浏览器与服务器之间的通信少不了HTTP协议,但是由于HTTP协议是无状态的,服务器不知道浏览器上次做了什么样的操作,严重的阻碍了交互式网络应用程序的实现。  2.Cookie传输  在实现Cookie标准的过程中,服务器需要向任何HTTP请求发送Set-CookieHTTP头作为响应的一部分:  1.Set-Cookie:name=value;expires=Tue,03-Sep-201914:10:21GMT;path=/;domain=.xxx.com;  浏览器会存储这样一个cookie,并为后续的每个请求添加一个CookieHTTP请求头并将其发送回服务器:  1.Cookie:name=value  服务器验证cookie值以确定浏览器将请求发送给哪个用户。  3。浏览器中的Cookie  浏览器中的Cookie主要由以下部分组成:  ·名称:cookie的唯一名称,必须进行URL编码。(重名会被覆盖)  ·值:必须是URL编码。  ·domain:默认情况下cookie在当前域下有效,也可以设置该值来保证是否对其子域有效。  ·Path(路径):指定cookie在哪个路径下有效,默认为当前路径。  ·过期时间(expires):默认情况下,cookie会在浏览器会话结束时自动删除;您还可以设置一个GMT格式的日期来指定一个特定的删除日期;如果设置的日期是之前的日期,cookie将被立即删除。  ·安全标志(secure):指定后,只允许向https协议发送cookies。  浏览器在发送请求时,只会将名称和值添加到请求头的Cookie字段中,并发送给服务器。  浏览器提供了一个很烂的API来操作cookies:  1.document.cookie  上面的方法可以写cookie,每次只能写一个cookie字符串:  1.document.cookie='a=1;secure;path=/'  这个方法也可以用来读取cookie:  1.document.cookie//"a=1"  由于上面操作cookie的方法不够直观,所以一般会写一些函数来简化cookie的读取,设置和删除操作。  cookie设置操作需要以下几点:  name和value的URL编码处理,即使用JavaScript中的encodeURIComponent()方法;expires要求日期以GMT格式传递,需要处理成更简单的写法,例如:设置秒数的方式;只注意安全属性名称;  每条信息都需要使用分号和空格。  1.functionsetCookie(key,value,attributes){  2.if(typeofdocument==='undefined'){  3.return  4.}  5.attributes=Object.assign({},{  6.path:'/'  7.},attributes)  8.  9.let{domain,path,expires,secure}=attributes  10.  11.if(typeofexpires==='number'){  12.expires=newDate(Date.now()+expires*1000)  13.}  14.if(日期实例过期){  15.expires=expires.toUTCString()  16.}else{  17.expires=''  18.}  19.  20.key=encodeURIComponent(key)  21.value=encodeURIComponent(value)  22.  23.letcookieStr=${key}=${value}  24.  25.如果(域名){  26.cookieStr+=;域名=${域名}  27.}  28.  29.if(路径){  30.cookieStr+=;路径=${路径}  31.}  32.  33.if(过期){  34.cookieStr+=;expires=${expires}  35.}  36.  37.if(安全){  38.cookieStr+=;secure  39.}  40.  41.return(document.cookie=cookieStr)  42.}  Cookie读取操作需要注意name和value的URL解码处理,即在JavaScript中调用decodeURIComponent()方法:  1.functiongetCookie(name){  2.if(typeofdocument==='undefined'){  3.return  4.}  5.letcookies=[]  6.letjar={}  7.document.cookie&&(cookies=document.cookie.split(';'))  8.  9.for(leti=0,max=cookies.length;i