分享好友 生态资讯首页 生态资讯分类 切换频道

做网站前端开发中Cookie的一些事

2022-02-11 12:042100

cookie操作在前端开发过程中经常遇到,当然如果只是用来存储一些简单用户数据,还是比较简单的,我们要做的可能只是设置cookie名,值,过期时间等,读取也只要根据cookie的名读取相应的cookie值就可以了。在复杂的应用中,光这些肯定就不够了。


cookie的属性

除了name(名)和value(值),cookie还有以下一些可选属性,用来控制cookie的有效期,作用域,安全性等:


expires属性 指定了cookie的生存期,默认情况下cookie是暂时存在的,他们存储的值只在浏览器会话期间存在,当用户退出浏览器后这些值也会丢失,如果想让cookie存在一段时间,就要为expires属性设置为未来的一个用毫秒数表示的过期日期或时间点,expires默认为设置的expires的当前时间。现在已经被max-age属性所取代,max-age用秒来设置cookie的生存期。


如果max-age属性为正数,则表示该cookie会在max-age秒之后自动失效。浏览器会将max-age为正数的cookie持久化,即写到对应的cookie文件中。无论客户关闭了浏览器还是电脑,只要还在max-age秒之前,登录网站时该cookie仍然有效。


如果max-age为负数,则表示该cookie仅在本浏览器窗口以及本窗口打开的子窗口内有效,关闭窗口后该cookie即失效。max-age为负数的cookie,为临时性cookie,不会被持久化,不会被写到cookie文件中。cookie信息保存在浏览器内存中,因此关闭浏览器该cookie就消失了。cookie默认的max-age值为-1。


‍如果max-age为0,则表示删除该cookie。cookie机制没有提供删除cookie的方法,因此通过设置该cookie即时失效实现删除cookie的效果。失效的cookie会被浏览器从cookie文件或者内存中删除。


如果不设置expires或者max-age这个cookie默认是Session的,也就是关闭浏览器该cookie就消失了。


这里要说明一下:Session的cookie在ie6下,如果用户实在网页上跳转打开页面或新开窗口(包括target=”_blank”,鼠标右键新开窗口),都是在同一个Session内。如果用户新开浏览器程序或者说是进程再打开当前的页面就不是同一个Session。其他浏览器只要你Session存在,还是同一个Session,cookie还能共享。在前段时间的项目中ie6下吃了很大一个亏。


domain属性

domain属性可以使多个web服务器共享cookie。domain属性的默认值是创建cookie的网页所在服务器的主机名。不能将一个cookie的域设置成服务器所在的域之外的域。 例如让位于a.sodao.com的服务器能够读取b.sodao.com设置的cookie值。如果b.sodao.com的页面创建的cookie把它的path属性设置为”/”,把domain属性设置成”.sodao.com”,那么所有位于b.sodao.com的网页和所有位于a.sodao.com的网页,以及位于sodao.com域的其他服务器上的网页都可以访问这个cookie。


path属性

它指定与cookie关联在一起的网页。在默认的情况下cookie会与创建它的网页,该网页处于同一目录下的网页以及与这个网页所在目录下的子目录下的网页关联


secure属性

它是一个布尔值,指定在网络上如何传输cookie,默认是不安全的,通过一个普通的http连接传输;


HttpOnly属性

Httponly 属性限制了 cookie 对 HTTP 请求的作用范围。特别的,该属性指示用户代理忽略那些通过”非 HTTP” 方式对 cookie 的访问(比如浏览器暴露给js的接口)。注意 Httponly 属性和 Secure 属性相互独立:一个 cookie 既可以是 Httponly 的也可以有 Secure 属性。 在前段时间的项目中我就用js去读取一个cookie,结果怎么都取不到这个值,最后查证这个cookie是httpOnly的,花了近2个小时,悲剧了。


cookie的传输

浏览器将cookie信息以name-value对的形式存储于本地,每当请求新文档时,浏览器将发送cookie,目的是让Server可以通过HTTP请求追踪客户。所以从WEB性能的角度来说我们要尽量的减小cookie,以达到传输性能的更大化。


cookie的编码和解码

由于cookie的名/值中的值不允许包含分号,逗号和空格符,为了更大化用户代理和服务器的兼容性,任何被存储为 cookie 值的数据都应该被编码,例如用我们前端熟知的js全局函数encodeURIComponent编码和decodeURIComponent解码。


cookie作为客户端存储

前面说了每当请求新文档时,浏览器将发送cookie到服务器,导致WEB性能下降。所以不建议将cookie作为客户端存储一种实现方案,替代方案参见:Javascript本地存储实践(html5的localStorage和ie的userData)等。


同名的 cookie

同名的 cookie,不同的 domain 或不同的 path,属不同的 cookie;同名的 cookie,相同的 domain 且相同的 path,不同的 expires,属同一个 cookie。


举报
收藏 0
打赏 0
评论 0
网站建设对于企业的重要作用都有哪些呢
网站建设对于企业有哪些重要作用1、有利于提升企业形象网站的形象代表着企业的网上品牌形象,大众在网上了解一个企业的主要方式就是访问该公司的网站,网站容量大,企业几乎可以把任何想让客户及公众知道的内容放入

0评论2022-02-11558

一般网站建设主要分为哪几种类型呢
网站建设主要分为哪几种类型一、电子商务网站建设电子商务网站,顾名思义我们就可以想到是卖东西的网站,或者说是在网上实现成交的网站,专业的称呼叫b2c网站(商家对个人的网站模式),常见的做的好的像京东、苏宁易

0评论2022-02-11640

网站搭建原理及页面尺寸介绍
网站搭建原理:1、认识网站虚拟空间:虚拟空间是用来存放网站文件的。如:图片信息,html文件,php文件等。虚拟空间相当于一个硬盘空间,只是这个空间可以被互联网用户以网址或IP地址的形式访问。2、认识域名的作用含

0评论2022-02-09223