深入了解Cookie(1)------selenium2进行Cookie操作的前奏
世界上最宽阔的是海洋,比海洋还宽阔的是天空,比天空还宽阔的是人的心量。做人的心量有多大。人生的成就就有多大。
不为一己之利去争、去斗、去夺,扫除报复之心和妒忌之念。自然“心底无私天地宽”。
Cookie是当前识别用户,实现持久会话的最好方式。Cookie最初是由网景公司开发,可是如今全部的主要浏览器都支持它。
Cookie的类型:会话Cookie和持久Cookie
会话Cookie是一种暂时Cookie,它记录了用户訪问网站时的设置和偏好。
用户退出浏览器时,会话Cookie就被删除了。
持久Cookie生存的时间相对较长,他们存储在硬盘上,浏览器退出。计算机重新启动它们仍然存在。一般会用持久Cookie维护用户会周期性訪问的网站的配置文件或登录名。
会话Cookie和持久Cookie的唯一差别就是他们的过期时间。
假设设置了Discard參数,或者没有设置Expires或Max-Age參数来说明扩展的过期时间。这个Cookie就是一个会话Cookie。
想做持久Cookie-----一定要设置Expires或Max-Age參数。
Cookie的成分和版本号
如今使用的Cookie规范有两个不同的版本号:Cookies版本号0(有时被称为Netscape Cookies)和Cookies版本号1(RFC2965)。
Cookies版本号1是对Cookies版本号0的扩展,应用不如后者广泛。
Cookie规范版本号0和版本号1都不是昨晚HTTP1.1规范的一部分提供的。
| 标题 | 描写叙述 | 位置 |
|---|---|---|
| 持久client状态:HTTP Cookies | 最初的Netscape cookie 标准 | http://home.netscape.com/newsref/std/cookie_spec.html |
| RFC 2965:HTTP 状态管理机制 | 2000年10月的cookie标准。废弃了RFC2109 | http://www.ietf.org/rfc/rfc2965.txt |
cookies版本号0(Netscape)
定义了Set-Cookie响应首部、Cookie请求首部以及用于控制Cookie的字段
版本号0的Set-Cookie首部
Set-Cookie首部有一个强制性的Cookie名和Cookie值,后面跟着可选的Cookie属性。中间由分号分隔。
Set-Cookie属性
| Set-Cookie属性 | 描写叙述及实例 |
| NAME= VALUE | 强制的。NAME和VALUE都是字符序列,除非包括在双引號内,否则不包括分号、逗号、等号和空格。Webserver能够创建随意的NAME=VALUE关联,在后继对网站的訪问中会将其送回给Webserver:Set-Cookie: customer=Mary |
| Expires | 可选的。这个属性会指定一个日期字符串。用来定义Cookie的实际生存期。一旦到了过期日期。就不再存储或公布这个Cookie了,日期的格式为:Weekday。 DD-Mon-YY HH:MM:SS GMT 唯一合法的时区为GMT。各日期元素之间的分隔符一定要是长划线。假设没有指定Expires,cookie 就会在用户会话结束时过期: Set-Cookie:foo = bar;expires=Wednesday,09-Nov-99 23:12:30 GMT |
| Domain | 可选的。浏览器仅仅向指定的server主机名发送Cookie。
这样server就将Cookie限制在了特定的域中。acme.com域与anvil.acme.com 和shipping.crat.acme.com相匹配。可是与www.cnn.com就不匹配。 |
| Path | 可选的。通过这个属性能够为server上特定的文档分配Cookie。假设path属性是一个URL路径前缀。就能够附加一个Cookie。路径/foo与/foobar和/foo/bar.html相匹配。
路径.与域名中全部的内容都匹配。 |
| Secure | 可选的。假设包括了这样一个属性,就仅仅有在HTTP使用SSL安全连接时才会发送Cookie: Set-Cookie: private_id=733; secure |
版本号0的Cookie首部
client发送请求时,会将全部与域、路径和安全过滤器相匹配的未过期Cookie都发送给这个网站。全部Cookie都被组合到一个Cookie首部中:
Cookie:session-id=002-2222233-2233322; session-id-time=1033949384
Cookies1版本号(RFC 2965)
RFC 2965定义了一个Cookie的扩展版本号。这个版本号1标准引入了Set-Cookie2首部和cookie2首部,它比网景的标准略复杂。还未得到全然的支持。
修改项:
1.为每一个Cookie关联上解释性文本,对其目的进行解释
2.同意在浏览器退出时,不考虑过期时间。将Cookie强制销毁
3.用相对秒数。而不是绝对日期来表示Cookie的Max-Age
4.通过URLport号,而不不过域和路径过滤器(假设有的话)
5.为实现互操作性使用的版本
6.在Cookie首部从名字中区分出附加keyword的$前缀
Cookie版本号1的语法例如以下:
| set-cookie | = | "Set-Cookie2:" cookies |
| cookies | = | 1#cookie |
| cookie | = | NAME "=" VALUE * (" , set-cookie-av") |
| NAME | = | attr |
| VALUE | = | value |
| set-cookie-av | = | "Comment" "=" value |
| | | "CommentURL" “=” <”> http_URL <"> |
|
| | | "Discard" | |
| | | "Domain" "=" value | |
| | | “Max-Age” "=" value | |
| | | "Path" "=" value | |
| | | "Port" [ "=" <"> portlist <"> ] | |
| | | "Secure" | |
| | | "Version" "=" 1* DIGIT |
|
| portlist | = | 1#portnum |
| portnum | = | 1*DIGIT |
| cookie | = | "Cookie:" cookie-version 1*((";" | ",") cookie-value) |
| cookie-value | = | NAME "=" VALUE [";" path] [";" domain] [";" port] |
| cookie-version | = | "$Version" "=" |
| NAME | = | attr |
| VALUE | = | value |
| path | = | "$Path" "=“ value |
| domain | = | "$Domain" "=" value |
| port | = | "$Port" [ "=" <"> value <"> ] |
| cookie2 | = | "Cookie2:" cookie-version |
版本号1的Set-Cookie2首部
| Set-cookie2属性 | 描写叙述及实例 |
| NAME=VALUE | 强制的。WEBserver能够创建随意的NAME=VALUE关联,能够在后继对网站的訪问中将其发回给WEBserver,"$"是保留字符,所以名字一定不能以它开头 |
| Version | 强制的。
这个属性值是一个整数,相应于cookie规范的版本号、RFC 2965 为版本号1: |
| Comment | 可选的。这个属性说明了server准备怎样使用这个cookie。用户能够通过检查次策略来确定是否同意使用带有这个cookie的会话,这个值必须採用UTF-8编码 |
| CommentURL | 可选的。这个属性提供了一个URL指针,指向具体描写叙述了cookie目的及策略的文档。用户能够通过查看此策略来判定是否同意使用带有这个cookie的会话 |
| Discard | 可选的。假设提供了这个属性,就会在client程序终止时,指示client放弃这个cookie |
| Domain | 可选的。
浏览器仅仅向指定域中的server主机名发送cookie。这样server就能够将cookie限制在特定域中了,acme.com域与主机名anvil.acme.com和shipping.crate.acme.com相匹配,但不匹配于www.cnn.com。域名匹配的规则基本上与网景cookie一样。但有几条附加的规则。 |
| Max-Age | 可选的。
这个属性的值是一个整数,用于设置以秒为单位cookie生存期。client应该依据HTTP/1.1的使用期计算规则来计算cookie的使用期。cookie的使用期比Max-Age大时,client就应该将这个cookie丢弃。值为零说明应该马上将那个cookie丢弃。 |
| Path | 可选的。通过这个属性能够为server上的特定文档指定cookie。假设path属性是一个URL路径的前缀,就能够附加一个cookie。路径/foo匹配于/foobar和/foo/bar.html。
路径" / "匹配于域中全部内容。假设没有指定路径,就将其设置为生成Set-Cookie响应的路径。 |
| Port | 可选的。
这个属性能够单独作为keyword使用,也能够包括一个由逗号分隔的、能够应用cookie的port列表。假设有port列表,就仅仅能向port与列表中的port相匹配的server提供cookie,假设单独提供keywordPort而没有值,就仅仅能向当前响应server的port号提供cookie |
| Secure | 可选的。假设包括这个属性。就仅仅有在HTTP中使用SSL安全连接时才干发送cookie |
版本号1的Cookie首部
版本号1的cookie会带回与传送的每一个cookie相关的附加信息,用来描写叙述每一个cookie途径的过滤器。
每一个匹配的cookie都必须包括来自对应Set-Cookie2首部的全部Domain、Port或path属性。
深入了解Cookie(1)------selenium2进行Cookie操作的前奏的更多相关文章
- python selenium2 有关cookie操作实例及如何绕开验证码
1.先看一下cookie是啥 cookie是访问web时服务器记录在用户本地的一系列用户信息(比如用户登录信息),以便对用户进行识别 from selenium import webdriver im ...
- Day19 Django之Form表单验证、CSRF、Cookie、Session和Model操作
一.Form表单验证 用于做用户提交数据的验证1.自定义规则 a.自定义规则(类,字段名==html中的name值)b.数据提交-规则进行匹配代码如下: """day19 ...
- Django中Cookie和Session配置和操作
Cookie Cookie以键值对Key-Value形势进行信息的存储. Cookie基于域名安全,不同域名的Cookie是不能互相访问的 Cookie是存储在浏览器中的一段纯文本信息,建议不要存储敏 ...
- jquery.cookie.js && java后台代码 操作cookie实现记住当前用户输入信息代码
下载jquery.cookie.js地址看这里:http://pan.baidu.com/s/1gdCPaN5 //初始化页面时验证是否记住了密码 $(document).ready(function ...
- springboot项目:登录 登录aop拦截 使用Redis与cookie 进行设置获取清除操作
登录.登出: 第一步:在pom文件中引入依赖 <dependency> <groupId>org.springframework.boot</groupId> &l ...
- 【jquery操作cookie】JQuery中$.cookie()方法的使用(同名cookie会覆盖)
jquery.cookie.js插件: <script type="text/javascript" src="js/jquery-1.6.2.min.js&quo ...
- 管理Cookie的插件——jquery.cookie.js
下载地址:http://plugins.jquery.com/cookie/ jquery.cookie中的操作: 一.创建cookie: 1.创建一个会话cookie: $.cookie('cook ...
- 关于cookie的文章(cookie与session机制)
会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话.常用的会话跟踪技术是Cookie与Session.Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端 ...
- JMeter学习-012-JMeter 配置元件之-HTTP Cookie管理器-实现 Cookie 登录
前文我们讲过了若何获取登录后的 Cookie 信息,不知如何获取登录 Cookie 的朋友,敬请参阅我之前写的博文:Fiddler-005-获取 Cookie 信息.参阅上篇文章,获取到 Cookie ...
随机推荐
- Android 进度条对话框ProgressDialog
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...
- [置顶]
zabbix告警信息-lykchat信息发送系统
lykchat信息发送系统 lykchat信息发送系统是Python3开发的,通过模拟微信网页端,基于个人微信号,为系统管理人员提供信息发送工具. 实现的功能有用户登录管理.微信登陆管理和微信信息发送 ...
- opengl interface
glTranslate()是移动坐标系,比如glTranslate(-1.5,0,0),之后你画的图就是在屏幕左边1.5个单位~glRotation()是做旋转的,第一个参量是angle,后面3个分别 ...
- 读取配置文件包含properties和xml文件
读取properties配置文件 /** * 读取配置文件 * @author ll-t150 */ public class Utils { private static Properties pr ...
- TensorFlow笔记一 :测试和TFboard使用
一 .第一个TF python3.6 import tensorflow as tf x=2 y=3 node1=tf.add(x,y,name='node1') node2=tf.multiply ...
- 第1章 为什么创造WPF、第2章 XAML揭秘
1.2 步入WPF 下面是WPF的一些亮点: 广泛整合:各种媒体类型都能组合起来并一起呈现 与分辨率无关:因为WPF使用矢量图形 硬件加速:WPF是基于Direct3D创建的,工作全部是由GPU完成的 ...
- 《转》 在C++中使用TinyXML2解析xml
读取和设置xml配置文件是最经常使用的操作,试用了几个C++的XML解析器,个人感觉TinyXML是使用起来最舒服的,由于它的API接口和Java的十分类似.面向对象性非常好. TinyX ...
- base64加密PHP脚本的解码方法
转自:http://yoursunny.com/t/2009/PHP-decode/ PHP是网站服务端最流行的编程语言之一.PHP运行环境本身是开源的,服务器不加载插件时PHP脚本也无法加密.但是, ...
- xshell容易断开的问题
修改服务器的sshd_config文件. http://bbs.51cto.com/thread-904289-1.html
- apache压缩页面, 全面加速网站
介绍: 网页压缩来进一步提升网页的浏览速度,它完全不需要任何的成本,只不过是会让您的服务器CPU占用率稍微提升一两个百分点而已或者更少. 原理: 网页压缩是一项由 WEB 服务器和浏览器之间共 ...