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 相关文章推荐
JavaScript 一行代码,轻松搞定浮动快捷留言-V2升级版
Apr 02 Javascript
30个最佳jQuery Lightbox效果插件分享
Apr 11 Javascript
javascript之典型高阶函数应用介绍
Jan 10 Javascript
JQuery的AJAX实现文件下载的小例子
May 15 Javascript
javascript 3d 逐侦产品展示(核心精简)
Mar 26 Javascript
基于JavaScript怎么实现让歌词滚动播放
Nov 03 Javascript
js实现带简单弹性运动的导航条
Feb 22 Javascript
微信小程序 设置启动页面的两种方法
Mar 09 Javascript
js+canvas实现滑动拼图验证码功能
Mar 26 Javascript
vue单页开发父子组件传值思路详解
May 18 Javascript
Smartour 让网页导览变得更简单(推荐)
Jul 19 Javascript
游戏开发中如何使用CocosCreator进行音效处理
Apr 14 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
PHP使用者状态管理功能的应用
2006/10/09 PHP
一些被忽视的PHP函数(简单整理)
2010/04/30 PHP
PHP IF ELSE简化/三元一次式的使用
2011/08/22 PHP
php多功能图片处理类分享(php图片缩放类)
2014/03/14 PHP
php实现随机显示图片方法汇总
2015/05/21 PHP
教你如何解密js/vbs/vbscript加密的编码异处理小结
2008/06/25 Javascript
js 强制弹出窗口代码研究-又一款代码
2010/03/20 Javascript
火狐下table中创建form导致两个table之间出现空白
2013/09/02 Javascript
windows8.1+iis8.5下安装node.js开发环境
2014/12/12 Javascript
自定义百度分享的分享按钮
2015/03/18 Javascript
Node.js包管理器Yarn的入门介绍与安装
2016/10/17 Javascript
web 屏蔽BackSpace键实例代码
2016/12/24 Javascript
nodejs实例解析(输出hello world)
2017/01/03 NodeJs
Bootstrap下拉菜单样式
2017/02/07 Javascript
详解Vue前端对axios的封装和使用
2019/04/01 Javascript
JS操作字符串转数字的常见方法示例
2019/10/29 Javascript
借助云开发实现小程序短信验证码的发送
2020/01/06 Javascript
OpenLayers3实现测量功能
2020/09/25 Javascript
javascript实现简单留言板案例
2021/02/09 Javascript
[59:30]完美世界DOTA2联赛PWL S3 access vs LBZS 第二场 12.20
2020/12/23 DOTA
flask-socketio实现WebSocket的方法
2018/07/31 Python
python实现电子词典
2020/03/03 Python
python 多进程和协程配合使用写入数据
2020/10/30 Python
Traffic People官网:女式花裙、上衣和连身裤
2020/10/12 全球购物
李维斯牛仔裤荷兰官方网站:Levi’s NL
2020/08/23 全球购物
用JAVA实现一种排序,JAVA类实现序列化的方法(二种)
2014/04/23 面试题
美术师范毕业生自荐信
2013/11/16 职场文书
公司联欢晚会主持词
2014/03/22 职场文书
青蓝工程实施方案
2014/03/27 职场文书
培训班主持词
2014/03/28 职场文书
环保倡议书50字
2014/05/15 职场文书
二手房购房协议书范本
2014/10/05 职场文书
企业宣传稿范文
2015/07/23 职场文书
CSS中Single Div 绘图技巧的实现
2021/06/18 HTML / CSS
java项目构建Gradle的使用教程
2022/03/24 Java/Android
Python 全局空间和局部空间
2022/04/06 Python