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聚焦于第一个字段的代码
Oct 15 Javascript
关于JAVASCRIPT urldecode URL解码的问题
Jan 08 Javascript
EasyUI 中 MenuButton 的使用方法
Jul 14 Javascript
jquery prop的使用介绍及与attr的区别
Dec 19 Javascript
Jquery插件编写简明教程
Mar 25 Javascript
JS创建事件的三种方法(实例代码)
May 12 Javascript
Vuejs第八篇之Vuejs组件的定义实例解析
Sep 05 Javascript
vue组件实例解析
Jan 10 Javascript
为输入框加入数字js校验代码分享
Nov 02 Javascript
对 Vue-Router 进行单元测试的方法
Nov 05 Javascript
微信小程序实现用table显示数据库反馈的多条数据功能示例
May 07 Javascript
关于vue的列表图片选中打钩操作
Sep 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
浅谈ThinkPHP的URL重写
2014/11/25 PHP
PHP中字符与字节的区别及字符串与字节转换示例
2016/10/15 PHP
Yii框架表单提交验证功能分析
2017/01/07 PHP
php判断str字符串是否是xml格式数据的方法示例
2017/07/26 PHP
C#中TrimStart,TrimEnd,Trim在javascript上的实现
2011/01/17 Javascript
推荐11款jQuery开发的复选框和单选框美化插件
2011/08/02 Javascript
Json2Template.js 基于jquery的插件 绑定JavaScript对象到Html模板中
2011/10/29 Javascript
用javascript将数据导入Excel示例代码
2014/09/10 Javascript
jquery实现搜索框常见效果的方法
2015/01/22 Javascript
纯javascript实现自动发送邮件
2015/10/21 Javascript
浅析2种JavaScript继承方式
2015/12/04 Javascript
jQuery实现表格元素动态创建功能
2017/01/09 Javascript
Thinkphp5微信小程序获取用户信息接口的实例详解
2017/09/26 Javascript
vue 实现边输入边搜索功能的实例讲解
2018/09/16 Javascript
微信小程序缓存过期时间的使用详情
2019/05/12 Javascript
nodejs使用Sequelize框架操作数据库的实现
2020/10/21 NodeJs
[04:44]DOTA2西游记战队视频彩蛋流出 师徒开黑巧遇林书豪
2016/08/03 DOTA
[51:17]完美世界DOTA2联赛循环赛Inki vs DeMonsTer 第二场 10月30日
2020/10/31 DOTA
Python获取网页上图片下载地址的方法
2015/03/11 Python
Python使用multiprocessing实现一个最简单的分布式作业调度系统
2016/03/14 Python
深入理解python对json的操作总结
2017/01/05 Python
Python面向对象类编写细节分析【类,方法,继承,超类,接口等】
2019/01/05 Python
python 实现二维字典的键值合并等函数
2019/12/06 Python
如何使用python记录室友的抖音在线时间
2020/06/29 Python
python爬虫调度器用法及实例代码
2020/11/30 Python
波兰香水和化妆品购物网站:Notino.pl
2017/11/07 全球购物
eDreams意大利:南欧领先的在线旅行社
2018/11/23 全球购物
校园活动策划书范文
2014/01/10 职场文书
建筑安全员岗位职责
2014/03/13 职场文书
家长会演讲稿
2014/04/26 职场文书
我爱读书演讲稿
2014/05/07 职场文书
2014年旅游局法制宣传日活动总结
2014/11/01 职场文书
学籍证明模板
2014/11/21 职场文书
2015年学校心理健康教育工作总结
2015/05/11 职场文书
python如何在word中存储本地图片
2021/04/07 Python
详解Java实践之抽象工厂模式
2021/06/18 Java/Android