了解cookie
1.cookie数据会自动在Web浏览器和Web服务器之间传输的,因此服务端脚本就可以读,写存储在客户端的cookie值。
2.在javascript中使用cookie不会采用任何加密机制,因此是不安全的。但是,通过https来传输cookie数据是安全的,这和https的协议有关。
3.cookie的API中根本没有提供诸如查询,设置,删除cookie的方法,所有这些操作都要通过以特殊格式的字符串形式读写Document对象的cookie属性来完成。每个cookie的有效期和作用域,都可以通过cookie属性来分别制定。这些属性也是通过在同一个cookie属性上以特殊格式的字符串来特定的。
4.在js中使用cookie,首先需要确保cookie是否启用:{
a.通过检测navigator.cookieEnabled=true,则为cookie启用状态(但是,只具备‘当前浏览会话生命周期’的非持久化cookie仍然是启用的)
b.但是,navigator.cookieEnabled=true 不是所有的浏览器都支持这个属性,因此可以通过读,写和删除测试cookie数据来测试是否支持cookie。
}
5.除了name和value(及键值对),cookie还有一些可选的属性控制cookie的有效期和作用域。cookie默认的有效期很短暂,它只能维持在Web浏览器的会话期间,一旦用户关闭浏览器(是关闭浏览器,不是关闭单个窗口),cookie保存的数据就丢失了。
6.如果想要延长cookie的有效期,可以通设置max-age属性,但是必须明确告诉浏览器cookie的有效期是多长(单位是秒)。一旦设置了有效期,浏览器就会将cookie数据存储在一个文件夹中,并且直到过了指定的有效期才会删除该文件。
7.cookie的作用域是通过文档源和文档路径来确定的,该作用域通过cookie的path和domain属性也是可以配置的。默认情况下,cookie和创建它的web页面有关,并对该web页面以及和该web页面同目录或子目录的其他的web页面可见。比如:web页面www.example.com/catalog/index.html页面创建一个cookie,那么www.example.com/catalog/order.html和www.example.com/catalog/widge/index.html都能访问访问那个创建的cookie,因为是创建cookie的页面的通过目录或子目录下的页面。
8.若想要整个网站都能够使用相同的cookie 值。可以设置cookie的路径(设置cookie的path属性)。这样一来,来自同一个web服务器的web页面,只要URL是以指定的路径前缀开始的,都可以分享cookie。比如http://www.example.com/catalog/index.html页面创建一个cookie,并且将路径设置为"/catalog"(path="/catalog"),那么该cookie对于http://www.example.com/catalog/路径下的文件和页面都可以访问cookie。同理,设置‘/’路径,那么http://www.example.com/下的文件都能访问。
9.将cookie的路径设置成‘/’ ,等于是让cookie和localStorage拥有同样的作用域,同时当请求该站点任何一个Web页面的时候,浏览器都必须将cookie的名字和值传递给服务器。但是,要注意的是,cookie的path属性不能被用作访问控制机制。如果一个web页面想要读取同一站点其他页面的cookie,只要简单的将其他页面以隐藏<iframe>的形式加载进来,随后读取对应文档的cookie就可以了。
10.cookie的作用域默认由文档源限制。但是有些大型网站想要子域之间能够共享cookie如fanyi.baidu.com,yinyue.baidu.com,这个时候就需要通过设置cookie的domain属性来达到目的。如果catlog.exmple.com域下的一个页面创建了一个cookie,并将其path属性设置成‘/’,其domain属性设置成'./example.com',那么,该cookie将对所有catlog.example.com, order.example.com以及任何其他.example.com域下的任何其他服务器都可见。如果没有为一个cookie设置域属性,那么domain属性的默认值当前web服务器的主机名。要注意的是,cookie的域只能设置为当前服务器的域。
11.cookie的secure属性,它是一个布尔类型的属性,用来表明cookie的值以何种形式通过网络传递。cookie默认是不以不安全的形式(通过普通的,不安全的HTTP连接)传递的。而一旦cookie被标识为“安全的”,那就只能当浏览器和服务器通过HTTPS或者其他安全的协议连接的时候才能传递他。
保存cookie:待续
了解cookie的更多相关文章
- 超大 Cookie 拒绝服务攻击
有没有想过,如果网站的 Cookie 特别多特别大,会发生什么情况? 不多说,马上来试验一下: for (i = 0; i < 20; i++) document.cookie = i + '= ...
- IE10、IE11 User-Agent 导致的 ASP.Net 网站无法写入Cookie 问题
你是否遇到过当使用一个涉及到Cookie操作的网站或者管理系统时,IE 6.7.8.9下都跑的好好的,唯独到了IE10.11这些高版本浏览器就不行了?好吧,这个问题码农连续2天内遇到了2次.那么,我们 ...
- 解决cookie跨域访问
一.前言 随着项目模块越来越多,很多模块现在都是独立部署.模块之间的交流有时可能会通过cookie来完成.比如说门户和应用,分别部署在不同的机器或者web容器中,假如用户登陆之后会在浏览器客户端写入c ...
- jquery插件的用法之cookie 插件
一.使用cookie 插件 插件官方网站下载地址:http://plugins.jquery.com/cookie/ cookie 插件的用法比较简单,直接粘贴下面代码示例: //生成一个cookie ...
- 一个诡异的COOKIE问题
今天下午,发现本地的测试环境突然跑不动了,thinkphp直接跑到异常页面,按照正常的排错思路,直接看thinkphp的log 有一条 [ error ] [2]setcookie() expects ...
- [转载]Cookie/Session的机制与安全
Cookie和Session是为了在无状态的HTTP协议之上维护会话状态,使得服务器可以知道当前是和哪个客户在打交道.本文来详细讨论Cookie和Session的实现机制,以及其中涉及的安全问题. 因 ...
- jquery.cookie的使用
今天想到了要为自己的影像日记增加赞的功能,并且需要用到cookie. 记得原生的js操作cookie也不是很麻烦的,但似乎jquery更简单,不过相比原生js,需要额外引入2个文件,似乎又不是很好,但 ...
- 跨域问题,前端主动向后台发送cookie
跨域是什么? 从一个域名的网页访问另一个域名的资源,就会出现跨域.只要协议.端口.域名有一个不同就会出现跨域 例如: 1.协议不同 http://www.baidu.com:80 和 https:/ ...
- 【流量劫持】沉默中的狂怒 —— Cookie 大喷发
精简版:http://www.cnblogs.com/index-html/p/mitm-cookie-crack.html 前言 上一篇文章 讲解了如何借助前端技术,打造一个比 SSLStrip 更 ...
- 好好了解一下Cookie
Cookie的诞生 由于HTTP协议是无状态的,而服务器端的业务必须是要有状态的.Cookie诞生的最初目的是为了存储web中的状态信息,以方便服务器端使用.比如判断用户是否是第一次访问网站.目前最新 ...
随机推荐
- SpringBoot-(3)-RestController接口参数
一,无参接口: //无参接口 @RequestMapping("/appSecret") public String secret() { return "EK125EK ...
- some base knowledge
har类型的长度被定义为一个8位字节,这很简单. short类型的长度至少为两字节.在有些计算机上,对于有些编译程序,short类型的长度可能为4字节,或者更长. int类型是一个整数的“自然”大小, ...
- Android App 启动 Activity 创建解析
继承实现类关系: ActivityThread thread = new ActivityThread(); Context->ContextImpl ContextImpl contex ...
- Safair浏览器 时间戳转化兼容性问题。
chrome 等浏览器支持 yyyy-MM-dd hh:mm:ss 格式,使用 Date.parse()进行转化 safair 浏览器不知道这种格式,需要将格式设置为 yyyy/MM/dd hh:mm ...
- 通过dom4j写.xml文件
步骤: 1.左键选中src,点击红圈2: 2.新建类: 3.开始写代码: package com.bjsxt.xml; import java.io.File; import java.io.File ...
- 动态注册BroadcastReceiver
1. [代码][Java]代码 package com.zjt.innerreceiver; import android.app.Service; import android.con ...
- amazon redshift 分析型数据库特点——本质还是列存储
Amazon Redshift 是一种快速且完全托管的 PB 级数据仓库,使您可以使用现有的商业智能工具经济高效地轻松分析您的所有数据.从最低 0.25 USD 每小时 (不承担任何义务) 直到每年每 ...
- js 分享代码--完整示例代码
<div class="bdsharebuttonbox" data-tag="share_1"> <a class="bds_ms ...
- 使用grunt中遇到的问题
1.使用jshint进行代码检查时,grunt命令后报错: 因为出现了乱码,我猜测是因为编码原因导致的.遂在webstorm的setting中修改了编码为utf-8,问题解决.
- 装饰器 decorator
装饰器 def document_it(func): def new_function(*args, **kwargs): print('Running function:', func.__name ...