热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

cookie在javascript中的使用技巧以及隐私在服务器端的设置_javascript技巧

cookie在javascript中的使用技巧,需要的朋友可以参考下
读取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默认情况下只能供该网页所在文件夹及其子文件夹中的网页访问,如 http://www.jb51.net/aa/1.html 所设置的COOKIE 不能被 http://www.jb51.net/bb/2.html 访问,更多的时候都希望一个COOKIE能被本站所有网页访问,这就需要设置path属性, path=/ 表示该COOKIE的所属路劲是网站根目录,这样本站所有网页都能访问。

4、所属域名:COOKIE无法跨域访问,一般情况下,COOKIE仅供本站使用,如果想在多个网站下共享,那么共享COOKIE的网站必须拥有同一个主域名,通过设置 domain属性来实现。比如,如果想让 www.jb51.net 和 bbs.jb51.net这两个二级域名下的网站共享COOKIE,在设置COOKIE时需要设置domain=jb51.net

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 引用一个跨域的 页面 http://www.jb51.net/index.html ,即使浏览器中保存了属于 other.com 域名下的某个名为 otherLoginFrag 的COOKIE ,在 iframe 中请求 该页面时, otherLoginFrag 并不会随请求一起发往 www.other.com 的服务器。

第三方 COOKIE 限制在不同的浏览器中可能略有不同,比如, safari 在禁用 第三方 COOKIE 时,from 表单的提交也只有 post 方式才能提交 COOKIE .

如果在希望在浏览器禁用 第三方COOKIE 时仍能发送跨域请求的 COOKIE ,就需要在跨域的服务器中使用 P3P 响应头预先声明允许发送的 COOKIE.

代码如下:

 //php
header('P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"');
setCOOKIE("UserIDCOOKIE","123456");


推荐阅读
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 禁止程序接收鼠标事件的工具_VNC Viewer for Mac(远程桌面工具)免费版
    VNCViewerforMac是一款运行在Mac平台上的远程桌面工具,vncviewermac版可以帮助您使用Mac的键盘和鼠标来控制远程计算机,操作简 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • Python瓦片图下载、合并、绘图、标记的代码示例
    本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ... [详细]
  • HTML学习02 图像标签的使用和属性
    本文介绍了HTML中图像标签的使用和属性,包括定义图像、定义图像地图、使用源属性和替换文本属性。同时提供了相关实例和注意事项,帮助读者更好地理解和应用图像标签。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • 使用正则表达式爬取36Kr网站首页新闻的操作步骤和代码示例
    本文介绍了使用正则表达式来爬取36Kr网站首页所有新闻的操作步骤和代码示例。通过访问网站、查找关键词、编写代码等步骤,可以获取到网站首页的新闻数据。代码示例使用Python编写,并使用正则表达式来提取所需的数据。详细的操作步骤和代码示例可以参考本文内容。 ... [详细]
  • ECMA262规定typeof操作符的返回值和instanceof的使用方法
    本文介绍了ECMA262规定的typeof操作符对不同类型的变量的返回值,以及instanceof操作符的使用方法。同时还提到了在不同浏览器中对正则表达式应用typeof操作符的返回值的差异。 ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了markdown[软件代理设置]相关的知识,希望对你有一定的参考价值。 ... [详细]
  • CSS|网格-行-结束属性原文:https://www.gee ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 深入理解CSS中的margin属性及其应用场景
    本文主要介绍了CSS中的margin属性及其应用场景,包括垂直外边距合并、padding的使用时机、行内替换元素与费替换元素的区别、margin的基线、盒子的物理大小、显示大小、逻辑大小等知识点。通过深入理解这些概念,读者可以更好地掌握margin的用法和原理。同时,文中提供了一些相关的文档和规范供读者参考。 ... [详细]
  • 如何压缩网站页面以减少页面加载时间
    本文介绍了影响网站打开时间的两个因素,即网页加载速度和网站页面大小。重点讲解了如何通过压缩网站页面来减少页面加载时间。具体包括图片压缩、Javascript压缩、CSS压缩和HTML压缩等方法,并推荐了相应的压缩工具。此外,还提到了一款Google Chrome插件——网页加载速度分析工具Speed Tracer。 ... [详细]
author-avatar
博士吃货
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有