web中cookie和session_转
转自:Python爬虫番外篇之Cookie和Session python修行路
关于cookie和session估计很多程序员面试的时候都会被问到,这两个概念在写web以及爬虫中都会涉及,并且两者可能很多人直接回答也不好说的特别清楚,所以整理这样一篇文章,也帮助自己加深理解
什么是Cookie
其实简单的说就是当用户通过http协议访问一个服务器的时候,这个服务器会将一些Name/Value键值对返回给客户端浏览器,并将这些数据加上一些限制条件。在条件符合时,这个用户下次再访问服务器的时候,数据又被完整的带给服务器。
因为http是一种无状态协议,用户首次访问web站点的时候,服务器对用户一无所知。而Cookie就像是服务器给每个来访问的用户贴的标签,而这些标签就是对来访问的客户端的独有的身份的一个标识,这里就如同每个人的身份证一样,带着你的个人信息。而当一个客户端第一次连接过来的时候,服务端就会给他打一个标签,这里就如同给你发了一个身份证,当你下载带着这个身份证来的时候,服务器就知道你是谁了。所以Cookie是存在客户端的,这里其实就是在你的浏览器中。
Cookie中包含了一个由名字=值(name = value)这样的信息构成的任意列表,通过Set-Cookie或Set-Cookie2 HTTP响应(扩展)首部将其贴到客户端身上。如下图例子所示:
其实这里有一个非常典型的应用,就是关于你登录很多网站的账号信息,你让记住密码之后,一段时间内,不需要输入密码,每次都是登录状态
Cookie的分类
这里Cookie主要分为两种:
会话Cookie:不设置过期时间,保存在浏览器的内存中,关闭浏览器,Cookie便被销毁
普通Cookie:设置了过期时间,保存在硬盘上
Cookie属性
因为最开始的cookie是网景公司定义的,后来又有了RFC版本所以当前的Cookie有两个版本:Version 0 Version 1 他们有两种设置响应头的标识,分别是:Set-Cookie和Set-Cookie2,这也造成了一些属性的不同,这里需要注意:常用的为Version 0
Version 0的属性
NAME = Value :键值对设置要保存的Name/Value,这里的name不能喝其他属性的名字一样
Expires:过期时间
Domain:生成该Cookie的域名
Path: 该Cookie是在当前的哪个路径下生成
Secure:如果设置了这个属性,那么只会在SSH连接时才会回传该Cookie
Version 1的属性
Name=VALUE:键值对设置要保存的Name/Value,这里的name不能喝其他属性的名字一样
Comment:主是想,用于说明该Cookie有什么用途
CommentURL:该服务器为此COokie提供URI注释
Discard:是否在回话结束丢弃该Cookie,默认为false
Domain:生成该Cookie的域名
Max-Age:最大失效时间,与Version 0不同的是这里设置的是在多少秒后失效
Path:该Cookie是在当前的哪个路径下生成
Port:该 Cookie 在什么端口下可以回传服务端,如果有多个端口,以逗号隔开
Secure:如果设置了这个属性,那么只会在SSH连接时才会回传该Cookie
关于Session
上面我们知道了Cookie可以让服务器端跟踪每个客户端的访问,但是每次客户端的访问都必须传回这些 Cookie,如果 Cookie 很多,这无形地增加了客户端与服务端的数据传输量,而 Session 的出现正是为了解决这个问题。
同一个客户端每次和服务端交互时,不需要每次都传回所有的Cookie值,而是只要传回一个ID这个ID是客户端第一次访问服务器的时候生成的,而且每个客户端是唯一的。这样每个客户端就有了一个唯一的ID,客户端只要传回这个ID就行了,这个ID通常是NANE为JSESIONID的一个Cookie。所以Session其实是利用Cookie进行信息处理的。
- cookie和session的共同之处在于:cookie和session都是用来跟踪浏览器用户身份的会话方式。
- cookie 和session的区别是:cookie数据保存在客户端,session数据保存在服务器端。
- cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗,如果主要考虑到安全应当使用session,当然也没有绝对的安全,只是相对cookie,session更加安全
- session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,如果主要考虑到减轻服务器性能方面,应当使用COOKIE
- cookie和session各有优缺点,所以将登陆信息等重要信息存放为SESSION;其他信息如果需要保留,可以放在COOKIE中
web中cookie和session_转的更多相关文章
- java web中cookie的永久创建与撤销
一.首先是创建cookie 当在数据库中查找知道所输入的用户名和密码正确之后,就开始创建: String cb=request.getParameter("cb");//cb就是登 ...
- web中cookie的使用
一:cookie在浏览器中什么地方查找写入成功 二:如何用js写 function addCookie(name,value,expireHours){ var cookieString=name+& ...
- web中的cookie管理
本篇是以JSP为背景介绍,但是在web开发中也是相同的原理. 什么是cookie 由于http是一种无状态的协议,因此服务器收到请求后,只会当做一次新的请求.即便你重复发送了1000次同样的请求,这1 ...
- 使用OKHttp模拟登陆知乎,兼谈OKHttp中Cookie的使用!
本文主要是想和大家探讨技术,让大家学会Cookie的使用,切勿做违法之事! 很多Android初学者在刚开始学习的时候,或多或少都想自己搞个应用出来,把自己学的十八般武艺全都用在这个APP上,其实这个 ...
- java web中cookies的用法 转
一.什么是cookies? 大家都知道,浏览器与WEB服务器之间是使用HTTP协议进行通信的,当某个用户发出页面请求时,WEB服务器只是简单的进行响应,然后就关闭与该用户的 连接.因此当一个请求发送到 ...
- 深入分析Java Web中的编码问题
编码问题一直困扰着我,每次遇到乱码或者编码问题,网上一查,问题解决了,但是实际的原理并没有搞懂,每次遇到,都是什么头疼. 决定彻彻底底的一次性解决编码问题. 1.为什么要编码 计算机的基本单元是字节, ...
- lr 中cookie的解释与用法
Loadrunner 中 cookie 解释与用法loadrunner 中与 cookie 处理相关的常用函数如下: web_add_cookie(): 添加新的 cookie 或者修改已经存在的 c ...
- 理解 Web 中的Session
===================================Session 工作原理是什么?===================================因为 http 协议是无状态 ...
- 【转】彻底搞清C#中cookie的内容
http://blog.163.com/sea_haitao/blog/static/77562162012027111212610/ 花了2天时间,彻底搞清C#中cookie的内容,搞清以下内容将让 ...
随机推荐
- Docker CentOS / Ubuntu容器开启 SSH 服务
Docker CentOS / Ubuntu容器开启 SSH 服务 在CentOS容器内执行 yum install passwd openssl openssh-server -y # Ubuntu ...
- GitLab - 一些基础使用
1 - GitLab角色权限 1.1 组(同一组成员的行为权限) 管理员创建不同的分组,然后设定分组的负责人(Owner) Owner可以添加组员,为组创建项目,指定项目的负责人 项目负责人可以添加项 ...
- chrome/firefox如何设置很色背景
firefox 菜单栏设置黑色 自带黑色主题,直接Enabled 页面背景设置黑色 下载扩展Extensions:Dark Reader chrome 菜单栏设置黑色 下载主题Theme:Just b ...
- [计算机视觉][神经网络与深度学习]Faster R-CNN配置及其训练教程2
faster-rcnn分为matlab版本和python版本,首先记录弄python版本的环境搭建过程.matlab版本见另一篇:faster-rcnn(testing): ubuntu14.04+c ...
- PDF阅读器关闭“使用手型工具阅读文章”功能
1.问题描述 某些PDF文件打开时,光标显示的手型工具里面有个箭头,一点击鼠标左键,就跳转到下一页了.给阅读带来很多不便. 2.原因 因为这类PDF文档中带有"文章"(articl ...
- QT源码分析:QTcpServer
最近在看有关IO复用方面的内容,自己也用标准c++库实现了select模型.iocp模型.poll模型.回过头来很想了解QT的socket是基于什么模型来实现的,所以看了QT关于TcpServer实现 ...
- 可扩展标记语言XML之二:XML语言格式规范、文档组成
大家好,小乐又来了,好久不见!这次接着上次可扩展标记语言XML之一:XML概念,作用,示例,继续讲述XML. 一.格式良好的 xml 1.语法规范: 1).必须有 XML 文档声明: <?xml ...
- String字符串相关操作
.length 字符串长度.equals 比较字符串.equalIgnoreCase 比较字符串不区别大小写.charAt 获取字符串指定下标位置的字符.contains 判断字符串内是否包含某字符串 ...
- [案例一] Spring中的事件驱动模型(机制)
事件驱动模型是观察者模式的另一种形态,观察者相当于监听器,被观察者相当于事件源 事件源产生事件,监听器监听事件 以用户注册时候,要发送邮件和发送短信举例说明 定义一个事件 /** * spring会自 ...
- Apache Kafka工作流程| Kafka Pub-Sub Messaging
1.目标 在我们上一篇Kafka教程中,我们讨论了Kafka Docker.今天,我们将讨论Kafka Workflow.此外,我们将详细介绍Pub-Sub Messaging的工作流程以及Queue ...