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 相关文章推荐
html中使用javascript调用本地程序(exe、doc等)实现代码
Apr 26 Javascript
js限制文本框只能输入整数或者带小数点的数字
Apr 27 Javascript
javascript简单判断输入内容是否合法的方法
May 11 Javascript
JavaScript 函数模式详解及示例
Sep 07 Javascript
微信小程序 图片上传实例详解
May 05 Javascript
详解webpack 入门总结和实践(按需异步加载,css单独打包,生成多个入口文件)
Jun 20 Javascript
angular4 共享服务在多个组件中数据通信的示例
Mar 30 Javascript
浅谈Vue 数据响应式原理
May 07 Javascript
一个Vue视频媒体多段裁剪组件的实现示例
Aug 09 Javascript
jQuery实现的淡入淡出图片轮播效果示例
Aug 29 jQuery
如何在 JavaScript 中更好地利用数组
Sep 27 Javascript
JS寄快递地址智能解析的实现代码
Jul 16 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
全国FM电台频率大全 - 10 江苏省
2020/03/11 无线电
PHP获取文件后缀名的三个函数
2012/10/15 PHP
php返回json数据函数实例
2014/10/09 PHP
php提高网站效率的技巧
2015/09/29 PHP
解决更换PHP5.4以上版本后Dedecms后台登录空白问题的方法
2015/10/23 PHP
PHP实现绘制二叉树图形显示功能详解【包括二叉搜索树、平衡树及红黑树】
2017/11/16 PHP
js检测客户端不是firefox则提示下载
2007/04/07 Javascript
JavaScript取得鼠标绝对位置程序代码介绍
2012/09/16 Javascript
JSONP 跨域访问代理API-yahooapis实现代码
2012/12/02 Javascript
jquery bind(click)传参让列表中每行绑定一个事件
2014/08/06 Javascript
js图片闪动特效可以控制间隔时间如几分钟闪动一下
2014/08/12 Javascript
使用coffeescript编写node.js项目的方法汇总
2015/08/05 Javascript
javascript函数式编程程序员的工具集
2015/10/11 Javascript
javascript html5摇一摇功能的实现
2016/04/19 Javascript
EasyUI 中combotree 默认不能选择父节点的实现方法
2016/11/07 Javascript
JS基于递归算法实现1,2,3,4,5,6,7,8,9倒序放入数组中的方法
2017/01/03 Javascript
关于ES6的六个小特性(二)
2017/02/20 Javascript
nodejs socket实现的服务端和客户端功能示例
2017/06/02 NodeJs
vue实现element-ui对话框可拖拽功能
2018/08/17 Javascript
Vue表情输入组件 微信face表情组件
2019/02/11 Javascript
python计算两个地址之间的距离方法
2018/06/09 Python
Python基础学习之时间转换函数用法详解
2019/06/18 Python
python射线法判断一个点在图形区域内外
2019/06/28 Python
Python使用itchat模块实现简单的微信控制电脑功能示例
2019/08/26 Python
python实现输出一个序列的所有子序列示例
2019/11/18 Python
Django 路由层URLconf的实现
2019/12/30 Python
python字符串判断密码强弱
2020/03/18 Python
Python图片处理模块PIL操作方法(pillow)
2020/04/07 Python
详解Python 最短匹配模式
2020/07/29 Python
AmazeUi Tree(树形结构) 应用小结
2020/08/17 HTML / CSS
销售经理岗位职责
2014/03/16 职场文书
公司踏青活动方案
2014/08/16 职场文书
个人剖析材料范文
2014/09/30 职场文书
教师工作能力自我评价
2015/03/04 职场文书
2015年社区教育工作总结
2015/05/13 职场文书
Redis唯一ID生成器的实现
2022/07/07 Redis