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 学习技巧
Feb 17 Javascript
学习面向对象之面向对象的基本概念:对象和其他基本要素
Nov 30 Javascript
来自国外的页面JavaScript文件优化
Dec 08 Javascript
Jquery截取中文字符串的实现代码
Dec 22 Javascript
jquery select动态加载选择(兼容各种浏览器)
Feb 01 Javascript
PHP+mysql+Highcharts生成饼状图
May 04 Javascript
js 声明数组和向数组中添加对象变量的简单实例
Jul 28 Javascript
JavaScript实现广告弹窗效果
Aug 09 Javascript
微信小程序 五星评分(包括半颗星评分)实例代码
Dec 14 Javascript
Angular动态添加、删除输入框并计算值实例代码
Mar 29 Javascript
vue Render中slots的使用的实例代码
Jul 19 Javascript
构建大型 Vue.js 项目的10条建议(小结)
Nov 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
无JS,完全php面向过程数据分页实现代码
2012/08/27 PHP
解决phpmyadmin中缺少mysqli扩展问题的方法
2013/05/06 PHP
给大家分享几个常用的PHP函数
2017/01/15 PHP
让您的菜单不离网站
2006/10/03 Javascript
js类后台管理菜单类-MenuSwitch
2007/09/12 Javascript
js 去掉空格实例 Trim() LTrim() RTrim()
2014/01/07 Javascript
JS实现文字链接感应鼠标淡入淡出改变颜色的方法
2015/02/26 Javascript
jquery实现鼠标拖拽滑动效果来选择数字的方法
2015/05/04 Javascript
JavaScript编程的单例设计模讲解
2015/11/10 Javascript
谷歌showModalDialog()方法不兼容出现对话窗口的解决办法
2016/02/15 Javascript
JavaScript的ExtJS框架中数面板TreePanel的使用实例解析
2016/05/21 Javascript
angularjs 实现带查找筛选功能的select下拉框实例
2017/01/11 Javascript
JS文件/图片从电脑里面拖拽到浏览器上传文件/图片
2017/03/08 Javascript
less简单入门(CSS 预处理语言)
2017/03/08 Javascript
angularJs复选框checkbox选中进行ng-show显示隐藏的方法
2018/10/08 Javascript
react的滑动图片验证码组件的示例代码
2019/02/27 Javascript
ES6 Promise对象概念及用法实例详解
2019/10/15 Javascript
解决axios post 后端无法接收数据的问题
2019/10/29 Javascript
VUE异步更新DOM - 用$nextTick解决DOM视图的问题
2020/11/06 Javascript
python 网络爬虫初级实现代码
2016/02/27 Python
Python使用add_subplot与subplot画子图操作示例
2018/06/01 Python
详解Appium+Python之生成html测试报告
2019/01/04 Python
python tornado修改log输出方式
2019/11/18 Python
手把手教你用Django执行原生SQL的方法
2021/02/18 Python
L’Artisan Parfumeur官网:法国香水品牌
2020/08/11 全球购物
软件测试工程师面试问题精选
2016/10/28 面试题
企业节能减排实施方案
2014/03/19 职场文书
大学生就业自我推荐信
2014/05/10 职场文书
保密工作承诺书
2014/08/29 职场文书
合伙经营协议书范本(通用版)
2014/12/03 职场文书
书法社团活动总结
2015/05/07 职场文书
房产证明范本
2015/06/19 职场文书
python实现的web监控系统
2021/04/27 Python
7个你应该知道的JS原生错误类型
2021/04/29 Javascript
Python&Matlab实现樱花的绘制
2022/04/07 Python