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

cookies简介

时间:2023-04-02 23:36:53 HTML

cookie是浏览器访问服务器后,服务器发送给浏览器的一段数据。Cookie是http协议的一部分。当客户端第一次向服务器发送请求时,服务器会向客户端发送一个cookie来保存一些信息。当客户端下次向同一个服务器发送请求时,服务器通过识别客户端的cookie做出相应的动作。例如,当我们登录一个网站时,该网站记录了我们的用户名和密码,下次登录时不需要输入用户名和密码就可以直接登录。Web服务器通过发送一个Set-CookieHTTP标头。Set-Cookieheader是一个字符串,格式如下:Set-Cookie:NAME=VALUE;Expires=DATE;Path=PATH;Domain=DOMAIN_NAME;SECURE在chrome控制台,我们可以使用开发者工具查看http消息服务器响应请求后发送给浏览器的header,从而看到set-cookie,具体步骤如下:F12打开开发者工具→Network也在开发者工具中,可以查看服务器通过Application发送哪些cookie:NAME:cookie的名称,value为设置的cookie的值。expires:确定cookie的有效失效日期,指定cookie何时不再发送给服务器,浏览器将在指定时间后删除cookie。DATE属性值必须遵循特定格式:Wdy(星期几),Date-Month-YearHH:MM:SSGMT,如果不是这种格式,将无法识别。当没有设置expires选项时,cookie的生命周期仅限于当前session,当浏览器关闭时cookie文件会自动消失。Path:控制Cookie消息头的发送时机。当用户请求的资源URL中存在Path指定的路径时,Web服务器会发送Cookie消息头。通常,如果用户输入的URL中的路径部分从第一个字符开始就包含Path属性定义的字符串,浏览器就认为通过了检查。如果Path属性的值为“/”,则Web服务器上的所有WWW资源都可以读取该cookie。如果没有设置path选项,Path的属性值默认为Web服务器传递给浏览器的资源的路径名。域:确定哪些互联网域Web服务器可以读取浏览器访问的cookies,即只有来自该域的页面才能使用cookies中的信息。当没有设置Domain选项时,cookie的属性值被设置为web服务器的域名。请注意,仅在验证域选项后才比较路径属性。SECURE:只有当标志没有值时,只有当通过SSL或HTTPS发出请求时,包含安全选项的cookie才能发送到服务器。表示只有当浏览器与Web服务器之间的通信协议为加密认证协议时,浏览器才会向服务器提交相应的Cookie。在JavaScript中,cookie用于保存状态并为网络浏览器提供识别机制。在JavaScript中我们可以通过document.cookie属性创建、维护和删除cookie。设置cookie:document.cookie="userName=mavis";每个cookie都是一个名称/值对。如果想一次设置多个名称/值对,可以使用如下方法:document.cookie="userName=mavis;userId=023";在cookie中,使用escape()函数进行编码,可以使用一些特殊符号的十六进制表示,特殊符号包括分号(;)、逗号(,)、等号(=)和空格等。但是用escape编码后(),提取值后需要使用unescape()解码得到原始的cookie值。JavaScript中的escape()函数对字符串进行编码,以便它可以在所有计算机上读取。语法如下:escape(string),string为要转义或编码的字符串。获取cookie的值:使用document.cookie直接获取由多个以分号分隔的name/value(名称/值)组成的字符串。这些名称/值对包括该域的所有cookie。varmyCookie=document.cookie;获取指定的cookie值,//设置两个cookiedocument.cookie="userName=mavis";document.cookie="userId=023";//获取cookie字符串varmyCookie=document.曲奇饼;vararrCookie=myCookie.split(";");变种用户名;for(vari=0;i0){start=document.cookie.indexOf(name+"=")if(start!=-1){start=start+name.length+1end=document.cookie.indexOf(";",start)if(end==-1)end=document.cookie.lengthreturnunescape(document.cookie.substring(start,end))}}return""}functionsetCookie(name,value,expiredays){varexdate=newDate()exdate.setDate(exdate.getDate()+expiredays)document.cookie=name+"="+escape(value)+((expiredays==null)?"":";expires="+exdate.toGMTString())}setCookie("用户名","tank",1800);//设置cookie的值,存活时间为半小时alert(getCookie('test'));//获取cookie的值,显示tank,但是运行的时候出现问题,在我的chrome浏览器上无法显示:于是上网查了一下原因,因为chrome浏览器有限制cookies,但是我给chrome浏览器的cookie已经设置为“允许设置本地数据”了,但是还是不行。谁看过这篇文章,谁能告诉我为什么?感激的。在edge浏览器上显示是这样的:最后请路人帮我解答chrome上无法执行的问题,谢谢~~~~