Session和Cookies

对于需要登录的情况,有些页面只有登录后才可以访问,而且登录之后可以连续访问很多次网站,但有时候过一段时间就会需要重新登录。还有些网站在打开浏览器时就自动登录了,而且很长时间都不会失效。这里面涉及到的就是Session和Cookies的相关知识。

1.静态网页和动态网页

网页内容是HTML代码编写的,文字、图片等内容军事通过写好的HTML代码来指定的,这种页面叫做静态网页。

这种网页加载速度快,编写简单,但存在很大的缺陷,如可维护性差,不能根据URL灵活多变的显示内容等。

动态网页可以动态解析URL中的参数变化,关联数据库并动态的呈现不同的页面内容,非常灵活多变,现在大多网站都是动态网站,它们不再是一个简单的HTML,而是可能由JSP,PHP,Python等语言编写的,功能相比静态网页丰富强大的多。

2.无状态HTTP

HTTP的无状态是指HTTP协议对事务是没有记忆能力的,也就是服务器不知道客户端是什么状态。当我们向服务器发送一个Request后,服务器解析此Request,然后返回对应的Response,服务器负责完成这个过程,而这个过程是完全独立的,服务器不会记录前后状态的变化,也就是缺少状态记录这意味着如果后续需要处理需要前面的信息,则它必须要重传,这也导致了需要额外传递一些前面的重复Request才能获取后续Response,而这种效果显然不是我们想要的。为了保持前后状态,我们肯定不能将前面的请求全部重传一次,这太浪费资源了,对于需要用户登录的界面,更是棘手。

用于保持HTTP连接状态的技术就是Session和Cookies,Session在服务端,也就是网站服务器,用来保存用户的会话信息,Cookies在客户端,也可以理解为浏览器端,有了Cookies浏览器在下次访问网页时会自动附带上它发送给服务器,服务器通过识别Cookies并鉴定出是哪个用户,然后再判断用户是否是登录状态,然后返回对应的Response。

可以这么理解,Cookies里保存了登录的凭证,有了它我们只需要在下次请求携带Cookies发送Request而不必重新输入用户名、密码等信息重新登录。

在爬虫中处理需要登录才能访问的页面时,一般会直接将登录成功后获取的Cookies放在Request Headers里面直接请求,而不必重新模拟登录。

3.Session

即会话,在Web中Session对象用来存储特定用户会话所需的属性及配置信息。这样,用户在应用程序的Web页面之间跳转时,存储在Session对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。用户请求来自应用程序的Web页时,如果该用户还没有会话,则服务器会自动创建一个Session对象。当会话过期或被放弃后,服务器将终止会话。

3.Cookies

指某些网站为了辨别用户身份、进行Session跟踪而储存在用户本地终端上的数据。

会话维持

客户端第一次请求服务器时,服务器会返回一个Headers中带有Set-Cookie字段的Response给客户端,用来标记是哪个用户,客户端会把Cookies保存起来。下一次请求该网站时,客户端会把Cookies放到Request Headers一起提交给服务器,Cookies携带了Session ID信息,服务器检查该Cookies即可找到对应的Session是什么,在判断Session来辨认用户状态。

在登录某个网站时,登录成功后服务器会告诉客户端设置哪些Cookies信息,在后续访问页面时客户端会把Cookies发送给服务器,服务器再找到对应的Session加以判断,如果Session中某些设置登录状态的变量是有效的,那就证明用户是处于登录状态的,即可返回登录之后才可以查看网页内容,浏览器进行解析就可以看到了。反之,如果传给服务器的Cookies是无效的,或者Session已经过期了,我们将不能继续访问页面,可能会收到错误的Response或者跳转到登录页面重新登录。

Cookies和Session一个处于客户端,一个处于服务端,二者共同协作,就实现了登录会话控制。

属性结构

Cookies中都有哪些哪些内容,以知乎为例

Cookies列表

我们可以看到 Cookies 有一个个条目,每个条目我们可以称之为 Cookie,取单数形式。它有这么几个属性:

Name,即该Cookie的名称。Cookie一旦创建,名称便不可更改。

Value,即该Cookie的值。如果为Unicode字符,需要为字符编码。如果为二进制数据,则需要使用BASE64编码。

Domain,即可以访问该Cookie的域名。例如设置为 .zhihu.com,则所有以 zhihu.com 结尾的域名都可以访问该Cookie。

Path,即该Cookie的使用路径。如果设置为/path/,则只有路径为/path/的页面可以访问该Cookie,如果设置为/,则本域名下的所有页面都可以访问该Cookie。

Max Age,即该Cookie失效的时间,单位秒,也常与Expires一起使用,通过它可以计算其有效时间。Max Age如果为正数,则该Cookie在Max Age秒后失效。如果为负数,则关闭浏览器时Cookie即失效,浏览器也不会以任何形式保存该Cookie。

Size,即此Cookie的大小

HTTP,即Cookie的httponly的属性。若此属性为true,则只有在HTTP Headers中会带有此Cookie的信息,而不能通过document.cookie来访问此Cookie

Secure,即该Cookie是否仅被使用安全协议传输。安全协议有HTTPS,SSL等,在网络上传输数据之前先将数据加密。默认为false。

以上便是Cookies的基本结构。

会话Cookie、持久Cookie

表面意思,会话Cookie就是把Cookie放在浏览器内存里,浏览器在关闭之后该Cookie即失效,持久Cookie则会保存到客户端的硬盘中,下次还可继续使用,用于长久保持用户登录状态。

严格意义上没有会话Cookie和持久Cookie之分,只是由Cookie的Max Age或Expires字段决定了过期的时间,通过浏览器可以计算出其有效时间。

Max Age为正数,Cookie在Max Age秒后失效,如果Max Age特别大,那就会保存横长时间。如果为负数,则关闭浏览器时 Cookie 即失效,浏览器也不会以任何形式保存该 Cookie。

所以一些持久化登录的网站其实就是把 Cookie 的有效时间和 Session 有效期设置得比较长,下次我们再访问页面时仍然携带之前的 Cookies 就可以直接保持登录状态。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 201,784评论 5 474
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,745评论 2 378
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 148,702评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,229评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,245评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,376评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,798评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,471评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,655评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,485评论 2 318
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,535评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,235评论 3 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,793评论 3 304
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,863评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,096评论 1 258
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,654评论 2 348
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,233评论 2 341

推荐阅读更多精彩内容