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实现的Div窗口震动效果实例
Aug 07 Javascript
动态的9*9乘法表效果的实现代码
May 16 Javascript
基于Bootstrap仿淘宝分页控件实现代码
Nov 07 Javascript
JS及JQuery对Html内容编码,Html转义
Feb 17 Javascript
JS原生带小白点轮播图实例讲解
Jul 22 Javascript
JS+WCF实现进度条实时监测数据加载量的方法详解
Dec 19 Javascript
JavaScript折半查找(二分查找)算法原理与实现方法示例
Aug 06 Javascript
vue.js单文件组件中非父子组件的传值实例
Sep 13 Javascript
详解vuex状态管理模式
Nov 01 Javascript
vue实现密码显示与隐藏按钮的自定义组件功能
Apr 23 Javascript
微信小程序页面调用自定义组件内的事件详解
Sep 12 Javascript
在js中修改html body的样式
Nov 11 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
第九节 绑定 [9]
2006/10/09 PHP
老生常谈ThinkPHP中的行为扩展和插件(推荐)
2017/05/05 PHP
thinkPHP利用ajax异步上传图片并显示、删除的示例
2018/09/26 PHP
javascript 对表格的行和列都能加亮显示
2008/12/26 Javascript
JQuery 插件制作实践 xMarquee插件V1.0
2010/04/02 Javascript
基于jquery的3d效果实现代码
2011/03/23 Javascript
js中widow.open()方法使用详解
2013/07/30 Javascript
js返回上一页并刷新的多种实现方法
2014/02/26 Javascript
深入浅析JavaScript字符串操作方法 slice、substr、substring及其IE兼容性
2015/12/16 Javascript
在Docker快速部署Node.js应用的详细步骤
2016/09/02 Javascript
微信小程序开发之录音机 音频播放 动画实例 (真机可用)
2016/12/08 Javascript
Bootstrap导航条的使用和理解3
2016/12/14 Javascript
使用BootStrap实现表格隔行变色及hover变色并在需要时出现滚动条
2017/01/04 Javascript
Nodejs中使用captchapng模块生成图片验证码
2017/05/18 NodeJs
使用JS动态显示文本
2017/09/09 Javascript
vue中eventbus被多次触发以及踩过的坑
2017/12/02 Javascript
微信小程序视图容器(swiper)组件创建轮播图
2020/06/19 Javascript
Vuerouter的beforeEach与afterEach钩子函数的区别
2018/12/26 Javascript
微信小程序下拉框搜索功能的实现方法
2019/07/31 Javascript
Javascript原生ajax请求代码实例
2020/02/20 Javascript
python批量修改文件后缀示例代码分享
2013/12/24 Python
python处理文本文件并生成指定格式的文件
2014/07/31 Python
Python实现批量把SVG格式转成png、pdf格式的代码分享
2014/08/21 Python
Python连接phoenix的方法示例
2017/09/29 Python
解决nohup执行python程序log文件写入不及时的问题
2019/01/14 Python
对pandas处理json数据的方法详解
2019/02/08 Python
python实现视频分帧效果
2019/05/31 Python
详解Python实现进度条的4种方式
2020/01/15 Python
解决Python spyder显示不全df列和行的问题
2020/04/20 Python
是什么让J2EE适合用来开发多层的分布式的应用
2015/01/16 面试题
工地资料员岗位职责
2013/12/31 职场文书
电工工作职责范本
2014/02/22 职场文书
材料成型及控制工程专业求职信
2014/06/19 职场文书
董事长助理工作职责范本
2014/07/01 职场文书
2014医学院领导干部四风对照检查材料思想汇报
2014/09/16 职场文书
2014年学习部工作总结
2014/11/12 职场文书