cookie在javascript中的使用技巧以及隐私在服务器端的设置


Posted in Javascript onDecember 03, 2012

读取cookie字符串方法:

alert(document.cookie);

一个网站的cookie字符串包含了该站点域名下的所有cookie(javascript 可访问的,不包括 httponly 的cookie ),多个cookie之间用分号和一个空格隔开,最多一般是 20个或50个,例如,包含2个cookie的字符串格式为

document.cookie = "key1=value1; key2=value2"

一个cookie字符串最长为4k,超出个数限制或长度限制时将返回空值, cookie 个数超出限制时,会造成另外一些 cookie 丢失,按规范,丢失的应该是 最近、最少使用的,但是浏览器的实现并不完全遵循这个规范。

设置一个cookie的方法:

document.cookie="key=value;expires=date;path=/;domain=xxx.com;secure";

要设置多个cookie 只要反复使用 document.cookie = XXX 即可,会自动和其他cookie拼接成一个cookie字符串。

如果要读取某个cookie的值,只能通过解析cookie字符串来得到。

下面是设置cookie时的几个参数

1、名和值:key 为 cookie名称,value为cookie值

2、过期时间:expires用于设置过期时间,为格林威治字符串格式,如 

expires = new Date('2011-12-30').toUTCString(); //"Fri, 30 Dec 2011 00:00:00 GMT"

如果没有设置过期时间,cookie将在浏览器关闭时失效。

 

3、所属路劲:网站某张网页中的脚本所设置的cookie默认情况下只能供该网页所在文件夹及其子文件夹中的网页访问,如 https://3water.com/aa/1.html 所设置的cookie 不能被 https://3water.com/bb/2.html 访问,更多的时候都希望一个cookie能被本站所有网页访问,这就需要设置path属性, path=/ 表示该cookie的所属路劲是网站根目录,这样本站所有网页都能访问。

4、所属域名:cookie无法跨域访问,一般情况下,cookie仅供本站使用,如果想在多个网站下共享,那么共享cookie的网站必须拥有同一个主域名,通过设置 domain属性来实现。比如,如果想让 3water.com 和 bbs.3water.com这两个二级域名下的网站共享cookie,在设置cookie时需要设置domain=3water.com

5、加密传输:如果一个cookie带有secure属性,那么cookie在传输到服务器的过程中将使用加密数据的方式传输。

 

 

cookie字符串编码:

cookie字符串中不能包含空格,分号,逗号等特殊符号,如果可能包含这些符号,可以使用encodeURIComponent()函数将 cookie 的值进行编码,读取 cookie 的值时再使用decodeURIComponent()函数把值进行转换回来,如 document.cookie="key="+encodeURIComponent(value);

  

在服务器设置 cookie 并声明其私密性(secure 及 httponly):

有时候为安全,你可能需要限制一些 cookie 的访问

secure : 该 cookie 仅供 https 安全连接使用

httponly : cookie 仅供 http 传输过程中使用,javascript 不能访问该 cookie

例如,在PHP 中使用内置函数setcookie() 设置一个具有私密性限制的 cookie

setcookie("UserIDCookie","123456",time()+60*30,'/','mytest.com',false,true);

其中第六个参数 表示是否仅供 https 连接使用,第 七个参数 true 表示是否为 httponly

 

跨域请求及第三方 cookie ,以及 P3P(个人隐私保护策略):

浏览器的隐私设置(或者内容设置,chrome 在高级设置--内容设置 选项)中,设置禁止使用第三方 cookie 时,跨域请求(包括 iframe ,img ,javascript 文件等请求)无法发送属于该域的 cookie .

例如, 通过 iframe 引用一个跨域的 页面 https://3water.com/index.html ,即使浏览器中保存了属于 other.com 域名下的某个名为 otherLoginFrag 的cookie  ,在 iframe 中请求 该页面时, otherLoginFrag 并不会随请求一起发往 www.other.com 的服务器。

第三方 cookie 限制在不同的浏览器中可能略有不同,比如, safari 在禁用 第三方 cookie 时,from 表单的提交也只有 post 方式才能提交 cookie .

如果在希望在浏览器禁用 第三方cookie 时仍能发送跨域请求的 cookie ,就需要在跨域的服务器中使用 P3P 响应头预先声明允许发送的 cookie.

设置一个cookie的方法:

Javascript 相关文章推荐
Ajax一统天下之Dojo整合篇
Mar 24 Javascript
jQuery ready函数滥用分析
Feb 16 Javascript
也说JavaScript中String类的replace函数
Sep 22 Javascript
qTip2 精致的基于jQuery提示信息插件
Feb 17 Javascript
document.compatMode的CSS1compat使用介绍
Apr 03 Javascript
jquery的ajax异步请求接收返回json数据实例
Jun 16 Javascript
实例讲解javascript注册事件处理函数
Jan 09 Javascript
快速解决js动态改变dom元素属性后页面及时渲染的问题
Jul 06 Javascript
MVVM 双向绑定的实现代码
Jun 21 Javascript
vue实现点击关注后及时更新列表功能
Jun 26 Javascript
vue单页应用在页面刷新时保留状态数据的方法
Sep 21 Javascript
D3.js(v3)+react 实现带坐标与比例尺的柱形图 (V3版本)
May 09 Javascript
js函数调用常用方法详解
Dec 03 #Javascript
JS随即打乱数组实现代码
Dec 03 #Javascript
JS图片预加载 JS实现图片预加载应用
Dec 03 #Javascript
输入密码检测大写是否锁定js实现代码
Dec 03 #Javascript
js操作textarea 常用方法总结
Dec 03 #Javascript
javascript object array方法使用详解
Dec 03 #Javascript
让AJAX不依赖后端接口实现方案
Dec 03 #Javascript
You might like
上海地方志办公室-上海电子仪表工业志
2021/03/04 无线电
PHP动态生成javascript文件的2个例子
2014/04/11 PHP
codeigniter数据库操作函数汇总
2014/06/12 PHP
Ajax中的JSON格式与php传输过程全面解析
2017/11/14 PHP
PHP html_entity_decode()函数讲解
2019/02/25 PHP
js表数据排序 sort table data
2009/02/18 Javascript
JavaScript 动态创建VML的方法
2009/10/14 Javascript
几个有趣的Javascript Hack
2010/07/24 Javascript
jQuery实现按键盘方向键翻页特效
2015/03/18 Javascript
javascript中replace( )方法的使用
2015/04/24 Javascript
jQuery可见性过滤器:hidden和:visibility用法实例
2015/06/24 Javascript
AngualrJS中每次$http请求时的一个遮罩层Directive
2016/01/26 Javascript
基于BootstrapValidator的Form表单验证(24)
2016/12/12 Javascript
js微信应用场景之微信音乐相册案例分享
2017/08/11 Javascript
React学习笔记之列表渲染示例详解
2017/08/22 Javascript
详解angular笔记路由之angular-router
2017/09/12 Javascript
js实现随机点名系统(实例讲解)
2017/10/18 Javascript
通过jQuery学习js类型判断的技巧
2019/05/27 jQuery
初学vue出现空格警告的原因及其解决方案
2019/10/31 Javascript
Vue使用富文本编辑器Vue-Quill-Editor(含图片自定义上传服务、清除复制粘贴样式等)
2020/05/15 Javascript
python中urllib.unquote乱码的原因与解决方法
2017/04/24 Python
python中文件变化监控示例(watchdog)
2017/10/16 Python
python如何统计序列中元素
2020/07/31 Python
ActiveMQ:使用Python访问ActiveMQ的方法
2019/01/30 Python
python绘制无向图度分布曲线示例
2019/11/22 Python
关于python 的legend图例,参数使用说明
2020/04/17 Python
专业销售业务员求职信
2013/11/18 职场文书
小学家长会邀请函
2014/01/23 职场文书
教师职称自我鉴定
2014/02/12 职场文书
创建学习型党组织实施方案
2014/03/29 职场文书
机械专业求职信
2014/05/25 职场文书
投标授权委托书范文
2014/08/02 职场文书
授权委托书样本及填写说明
2014/09/19 职场文书
四风查摆问题及整改措施
2014/10/10 职场文书
巾帼建功标兵先进事迹材料
2016/02/29 职场文书
Go 实现英尺和米的简单单位换算方式
2021/04/29 Golang