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 相关文章推荐
jQuery 连续列表实现代码
Dec 21 Javascript
jquery增加时编辑jqGrid(实例代码)
Nov 08 Javascript
两种方法实现在HTML页面加载完毕后运行某个js
Jun 16 Javascript
jQuery基本选择器之标签名选择器
Sep 03 Javascript
利用vue.js插入dom节点的方法
Mar 15 Javascript
JavaScript通过filereader接口读取文件
May 10 Javascript
解决Jstree 选中父节点时被禁用的子节点也会选中的问题
Dec 27 Javascript
JavaScript实现删除数组重复元素的5种常用高效算法总结
Jan 18 Javascript
解决vue处理axios post请求传参的问题
Mar 05 Javascript
详解关于JSON.parse()和JSON.stringify()的性能小测试
Mar 14 Javascript
vue 自动化路由实现代码
Sep 03 Javascript
vue实现路由监听和参数监听
Oct 29 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
理解PHP5中static和const关键字的区别
2007/03/19 PHP
php下用GD生成生成缩略图的两个选择和区别
2007/04/17 PHP
关于PHP堆栈与列队的学习
2013/06/21 PHP
关于PHP内存溢出问题的解决方法
2013/06/25 PHP
为JavaScript添加重载函数的辅助方法
2010/07/04 Javascript
js中Image对象以及对其预加载处理示例
2013/11/20 Javascript
Javascript 按位与运算符 (&)使用介绍
2014/02/04 Javascript
一款基于jQuery的图片场景标注提示弹窗特效
2015/01/05 Javascript
使用js画图之正弦曲线
2015/01/12 Javascript
jQuery实现页面顶部显示的进度条效果完整实例
2015/12/09 Javascript
bootstrap插件treeview实现全选父节点下所有子节点和反选功能
2017/07/21 Javascript
[js高手之路]单例模式实现模态框的示例
2017/09/01 Javascript
详解vue-admin和后端(flask)分离结合的例子
2018/02/12 Javascript
使用vue-infinite-scroll实现无限滚动效果
2018/06/22 Javascript
详解vue几种主动刷新的方法总结
2019/02/19 Javascript
python3简单实现微信爬虫
2015/04/09 Python
python各种语言间时间的转化实现代码
2016/03/23 Python
python web.py开发httpserver解决跨域问题实例解析
2018/02/12 Python
python定时关机小脚本
2018/06/20 Python
Python3.6.x中内置函数总结及讲解
2019/02/22 Python
CSS3 完美实现圆角效果
2009/07/13 HTML / CSS
利用CSS3动画实现圆圈由小变大向外扩散的效果实例
2018/09/10 HTML / CSS
草莓网美国官网:Strawberrynet USA
2016/12/11 全球购物
室内设计专业学生的自我评价分享
2013/11/27 职场文书
外企办公室竞聘演讲稿
2013/12/29 职场文书
酒店总经理岗位职责
2014/03/17 职场文书
环保宣传标语
2014/06/12 职场文书
庆祝儿童节标语
2014/10/09 职场文书
2015年小学语文教学工作总结
2015/05/25 职场文书
2015秋季新学期开学寄语
2015/05/28 职场文书
浅析InnoDB索引结构
2021/04/05 MySQL
自定义函数实现单词排序并运用于PostgreSQL(实现代码)
2021/04/22 PostgreSQL
Vue接口封装的完整步骤记录
2021/05/14 Vue.js
一篇文章了解正则表达式的替换技巧
2022/02/24 Javascript
Python+DeOldify实现老照片上色功能
2022/06/21 Python
canvas 中如何实现物体的框选
2022/08/05 Javascript