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 ajax BUG:object doesn't support this property or method
Jul 06 Javascript
range 标准化之获取
Aug 28 Javascript
JavaScript实现班级随机点名小应用需求的具体分析
May 12 Javascript
Javascript学习笔记之 函数篇(三) : 闭包和引用
Nov 23 Javascript
编写高性能Javascript代码的N条建议
Oct 12 Javascript
javascript类型系统——undefined和null全面了解
Jul 13 Javascript
vue2利用Bus.js如何实现非父子组件通信详解
Aug 25 Javascript
javascript中神奇的 Date对象小结
Oct 12 Javascript
Node.js readline 逐行读取、写入文件内容的示例
Mar 01 Javascript
vue-drag-chart 拖动/缩放图表组件的实例代码
Apr 10 Javascript
微信小程序实现音乐播放页面布局
Dec 11 Javascript
Vue 数据响应式相关总结
Jan 28 Vue.js
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
浅谈Windows下 PHP4.0与oracle 8的连接设置
2006/10/09 PHP
php 如何获取数组第一个值
2013/08/06 PHP
php使用curl访问https示例分享
2014/01/17 PHP
jquery+php+ajax显示上传进度的多图片上传并生成缩略图代码
2014/10/15 PHP
PHP生成静态HTML页面最简单方法示例
2015/04/09 PHP
jquery获取ASP.NET服务器端控件dropdownlist和radiobuttonlist生成客户端HTML标签后的value和text值
2010/06/28 Javascript
jquery 查找select ,并触发事件的实现代码
2011/03/30 Javascript
火狐4、谷歌12不支持Jquery Validator的解决方法分享
2011/06/20 Javascript
eval的两组性能测试数据
2012/08/17 Javascript
jQuery实现标题有打字效果的焦点图代码
2015/11/16 Javascript
WebApi+Bootstrap+KnockoutJs打造单页面程序
2016/05/16 Javascript
用JS中split方法实现彩色文字背景效果实例
2016/08/24 Javascript
用自定义图片代替原生checkbox实现全选,删除以及提交的方法
2016/10/18 Javascript
微信小程序之网络请求简单封装实例详解
2017/06/28 Javascript
轻松理解vue的双向数据绑定问题
2017/10/30 Javascript
从vue源码解析Vue.set()和this.$set()
2018/08/30 Javascript
详解解决Vue相同路由参数不同不会刷新的问题
2018/10/12 Javascript
通过JS运行机制的角度说说作用域
2019/03/12 Javascript
微信小程序判断页面是否从其他页面返回的实例代码
2019/07/03 Javascript
详解vuex的简单todolist例子
2019/07/14 Javascript
JavaScript this在函数中的指向及实例详解
2019/10/14 Javascript
Openlayers实现图形绘制
2020/09/28 Javascript
[42:32]DOTA2上海特级锦标赛B组资格赛#2 Fnatic VS Spirit第二局
2016/02/27 DOTA
[57:59]EG vs Secret 2018国际邀请赛淘汰赛BO3 第一场 8.22
2018/08/23 DOTA
python 字符串和整数的转换方法
2018/06/25 Python
Django model序列化为json的方法示例
2018/10/16 Python
python try except返回异常的信息字符串代码实例
2019/08/15 Python
Python selenium页面加载慢超时的解决方案
2020/03/18 Python
python如何进入交互模式
2020/07/06 Python
Python使用正则表达式实现爬虫数据抽取
2020/08/17 Python
建筑工程技术应届生求职信
2013/11/17 职场文书
电气自动化个人求职信范文
2014/02/03 职场文书
决心书标准格式
2014/03/11 职场文书
大龄毕业生求职别忘职业规划
2014/03/11 职场文书
经济贸易系求职信
2014/08/04 职场文书
县人大领导班子四风对照检查材料思想汇报
2014/10/09 职场文书