web前端优秀程序员分享cookie知识。今天,小编为大家带来了新手必看的干货。一起来看看吧。 1。cookies的出现 浏览器与服务器之间的通信,少不了HTTP协议,但是由于HTTP协议是无状态的,服务器不知道浏览器上次做了什么样的操作,所以严重的Blocks执行的交互式网络应用程序。 针对以上问题,网景程序员创造了Cookie。 2。Cookie传输 在实现Cookie标准的过程中,服务器需要向任何HTTP请求发送Set-CookieHTTP头作为响应的一部分: 1。设置Cookie:名称=值;到期=格林威治标准时间2019年9月3日星期二14:10:21;路径=/;域名=.xxx.com; 浏览器会存储这样的cookies,并为后续的每次请求添加cookiesHTTP请求头被发回服务器: 1。Cookie:name=value 服务器通过验证cookie值来判断浏览器向哪个用户发送请求。 3。浏览器中的Cookie 浏览器中的Cookie主要由以下部分组成: ·名称:cookie的唯一名称,必须进行URL编码。(同名会被覆盖) ·值:必须是URL编码。 ·域:默认情况下,cookie在当前域下有效,您也可以设置该值以确保其在其子域下有效。 ·Path(路径):指定cookie在哪个路径下有效,默认为当前路径。 ·过期时间(expires):默认情况下,cookie会在浏览器会话结束时自动删除;您还可以设置一个GMT格式的日期来指定一个特定的删除日期;如果设置的日期是之前的日期,cookie将被立即删除。 ·安全标志(secure):指定后,只允许向https协议发送cookies。 浏览器在发送请求时,只会将名称和值添加到请求头的Cookie字段中,并发送给服务器。 浏览器提供了一个非常糟糕的API来操作cookies: 1。文档.cookie 通过上述方法可以写入Cookie,一次只能写入一个Cookie字符串: 1。document.cookie='a=1;安全的;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.返回 4.} 5.attributes=Object.assign({},{ 6.path:'/' 7.},attributes) 8. 9.让{域、路径、过期、安全}=属性 10. 11。if(typeofexpires==='number'){ 12.expires=newDate(Date.now()+expires*1000) 13.} 14。if(expiresinstanceofDate){ 15.expires=expires.toUTCString() 16.}否则{ 17.过期='' 18.} 19. 20。key=encodeURIComponent(key) 21.value=encodeURIComponent(value) 22. 23。让cookieStr=${key}=${value} 24. 25.如果(域名){ 26.cookieStr+=;域名=${域名} 27.} 28. 29.如果(路径){ 30。cookieStr+=;路径=${路径} 31.} 32. 33.如果(过期){ 34.cookieStr+=;过期=${过期} 35.} 36. 37.如果(安全){ 38.cookieStr+=;安全 39。} 40. 41.return(document.cookie=cookieStr) 42.} Cookie读取操作需要注意name和value的URL解码,就是调用JavaScript中的decodeURIComponent()方法: 1.functiongetCookie(name){ 2.if(typeofdocument==='undefined'){ 3.返回 4.} 5.让饼干=[] 6。让jar={} 7.document.cookie&&(cookies=document.cookie.split(';')) 8. 9.for(leti=0,max=cookies.length;i
