Python—Session

python中session()是干什么作用的_session是什么意思

Session:在计算机中,尤其是在网络应用中,称为“会话控制”。Session 对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的 Web 页之间跳转时,存储在 Session 对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。当用户请求来自应用程序的 Web 页时,如果该用户还没有会话,则 Web 服务器将自动创建一个 Session 对象。

当会话过期或被放弃后,服务器将终止该会话。Session 对象最常见的一个用法就是存储用户的首选项。例如,如果用户指明不喜欢查看图形,就可以将该信息存储在 Session 对象中。有关使用 Session 对象的详细信息,请参阅“ASP 应用程序”部分的“管理会话”。注意 会话状态仅在支持 cookie 的浏览器中保留。

 

session是什么意思

首先,我大致的知道,session是一次浏览器和服务器的交互的会话,会话是啥呢?就是我问候你好吗?你回恩很好。就是一次会话,那么对话完成后,这次会话就结束了,还有我也知道,我们可以将一个变量存入全部的$_SESSION[‘name’]中,这样php的各个页面和逻辑都能访问到,所以很轻松的用来判断是否登陆。

这是我之前理解的session,当然也是对的,只是解释的太肤浅,理解的太表面了,这样的答案其实是不太满意的。参考其他的很多资料,彻底理解清楚session。

在说session是啥之前,我们先来说说为什么会出现session会话,它出现的机理是什么?我们用浏览器打开一个网页,用到的是HTTP协议,学过计算机的应该都知道这个协议,它是无状态的,什么是无状态呢?就是说这一次请求和上一次请求是没有任何关系的,互不认识的,没有关联的。但是这种无状态的的好处是快速。

所以就会带来一个问题就是,我希望几个请求的页面要有关联,比如:在www.a.com/login.php里面登陆了,在www.a.com/index.php 也希望是登陆状态,但是,这是2个不同的页面,也就是2个不同的HTTP请求,这2个HTTP请求是无状态的,也就是无关联的,所以无法单纯的在index.php中读取到它在login.php中已经登陆了!

那么怎么办呢?正常不可能将这2个页面再去登陆一遍吧。或者用笨方法这2个页面都去查询数据库,如果有登陆状态,就判断是登陆的了。这种查询数据库的方案虽然可行,但是每次都要去查询数据库不是个事,会造成数据库的压力。

所以正是这种诉求,这个时候,一个新的客户端存储数据方式出现了:cookie。cookie是把少量的信息存储在用户自己的电脑上,它在一个域名下是一个全局的,只要设置它的存储路径在域名www.a.com下 ,那么当用户用浏览器访问时,php就可以从这个域名的任意页面读取cookie中的信息。所以就很好的解决了我在www.a.com/login.php页面登陆了,我也可以在www.a.com/index.php获取到这个登陆信息了。同时又不用反复去查询数据库。

虽然这种方案很不错,也很快速方便,但是由于cookie 是存在用户端,而且它本身存储的尺寸大小也有限,最关键是用户可以是可见的,并可以随意的修改,很不安全。那如何又要安全,又可以方便的全局读取信息呢?于是,这个时候,一种新的存储会话机制:session 诞生了。

session 诞生了,从上面的描述来讲,它就是在一次会话中解决2次HTTP的请求的关联,让它们产生联系,让2两个页面都能读取到找个这个全局的session信息。session信息存在于服务器端,所以也就很好的解决了安全问题。

session的作用:会话Session能够跨请求保持某些参数,也会在同一个 Session 实例发出的所有请求之间保持 cookie

session在web开发中具有非常重要的份量。它可以将用户正确登录后的信息记录到服务器的内存中,当用户以此身份访问网站的管理后台时,无需再次登录即可得到身份确认。而没有正确登录的用户则不分配session空间,即便输入了管理后台的访问地址也不能看到页面内容。通过session确定了用户对页面的操作权限。

 用法

会话对象让你能够跨请求保持某些参数。它也会在同一个 Session 实例发出的所有请求之间保持 ​cookie​, 期间使用 urllib3 的 ​connection pooling​ 功能。所以如果你向同一主机发送多个请求,底层的 TCP 连接将会被重用,从而带来显著的性能提升。

会话对象具有主要的 Requests API 的所有方法。

我们来跨请求保持一些 ​cookie​:

s = requests.Session()s.get('http://httpbin.org/cookies/set/sessioncookie/123456789')
r = s.get("http://httpbin.org/cookies")print(r.text)
# '{"cookies": {"sessioncookie": "123456789"}}'

会话也可用来为请求方法提供缺省数据。这是通过为会话对象的属性提供数据来实现的:

s = requests.Session()
s.auth = ('user', 'pass')
s.headers.update({'x-test': 'true'})# both 'x-test' and 'x-test2' are sent
s.get('http://httpbin.org/headers', headers={'x-test2': 'true'})

任何你传递给请求方法的字典都会与已设置会话层数据合并。方法层的参数覆盖会话的参数。

不过需要注意,就算使用了会话,方法级别的参数也不会被跨请求保持。下面的例子只会和第一个请求发送 ​cookie​ ,而非第二个:

s = requests.Session()r = s.get('http://httpbin.org/cookies', cookies={'from-my': 'browser'})
print(r.text)
# '{"cookies": {"from-my": "browser"}}'r = s.get('http://httpbin.org/cookies')
print(r.text)
# '{"cookies": {}}'

如果你要手动为会话添加 ​cookie​,就使用 ​Cookie utility​ 函数 来操纵 ​Session.cookies​。

会话还可以用作前后文管理器:

with requests.Session() as s:s.get('http://httpbin.org/cookies/set/sessioncookie/123456789')

这样就能确保 ​with​ 区块退出后会话能被关闭,即使发生了异常也一样。

从字典参数中移除一个值

有时你会想省略字典参数中一些会话层的键。要做到这一点,你只需简单地在方法层参数中将那个键的值设置为 ​None​ ,那个键就会被自动省略掉。

包含在一个会话中的所有数据你都可以直接使用。

session 其实是一个会话类,requests 的所有请求方法,底层都是调用的这个类的对象。
其他方法和 session 的区别在于:
直接使用 requests 调用请求方法发送请求,每次都会创建一个新的 session(会话对象),所以没有之前请求的 cookies 信息
直接创建一个 session 对象来发请求,那么每次发请求用的都是这个会话对象,所有能够保存之前的会话信息(cookies 数据)

Requests Cookie

如果某个响应中包含一些 cookie,你可以快速访问它们:

>>> url = 'http://example.com/some/cookie/setting/url'
>>> r = requests.get(url)>>> r.cookies['example_cookie_name']
'example_cookie_value'

要想发送你的cookies到服务器,可以使用 cookies 参数:

>>> url = 'http://httpbin.org/cookies'
>>> cookies = dict(cookies_are='working')>>> r = requests.get(url, cookies=cookies)
>>> r.text
'{"cookies": {"cookies_are": "working"}}'

Cookie 的返回对象为 RequestsCookieJar,它的行为和字典类似,但接口更为完整,适合跨域名跨路径使用。你还可以把 Cookie Jar 传到 Requests 中:

>>> jar = requests.cookies.RequestsCookieJar()
>>> jar.set('tasty_cookie', 'yum', domain='httpbin.org', path='/cookies')
>>> jar.set('gross_cookie', 'blech', domain='httpbin.org', path='/elsewhere')
>>> url = 'http://httpbin.org/cookies'
>>> r = requests.get(url, cookies=jar)
>>> r.text
'{"cookies": {"tasty_cookie": "yum"}}'

Session与Cookie的区别

Session是在服务端保存的一个数据结构,用来跟踪用户的状态,这个数据可以保存在集群、数据库、文件中;

Cookie是客户端保存用户信息的一种机制,用来记录用户的一些信息,也是实现Session的一种方式。

1,session 在服务器端,cookie 在客户端(浏览器)
2,session 默认被存在在服务器的一个文件里(不是内存)
3,session 的运行依赖 session id,而 session id 是存在 cookie 中的,也就是说,如果浏览器禁用了 cookie ,同时 session 也会失效(但是可以通过其它方式实现,比如在 url 中传递 session_id)
4,session 可以放在 文件、数据库、或内存中都可以。
5,用户验证这种场合一般会用 session

因此,维持一个会话的核心就是客户端的唯一标识,即 session id

python中session()是干什么作用的_session是什么意思_session的作用是什么_weixin_39968266的博客-CSDN博客icon-default.png?t=M4ADhttps://blog.csdn.net/weixin_39968266/article/details/113968543

Requests 会话对象_w3cschoolicon-default.png?t=M4ADhttps://www.w3cschool.cn/requests2/requests2-k51h3fjm.html彻底理解cookie,session,token - 知乎 (zhihu.com)icon-default.png?t=M4ADhttps://zhuanlan.zhihu.com/p/63061864COOKIE和SESSION有什么区别? - 知乎 (zhihu.com)icon-default.png?t=M4ADhttps://www.zhihu.com/question/19786827

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/1620187.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

彻底弄清楚session是什么?

前言: 今天就来彻底的学一些session是个啥东西,我罗列了几个需要知道的要点: 1.session 是啥? 2.怎么保存的? 3.如何运行? 4.有生命周期吗? 5.关闭浏览器会过期吗? 6.redis代替文…

浅谈 Cookie 和 Session

理解Cookie理解Session核心方法案例-网页登录1. 编写一个简单的登录页面2. 编写一个 Servlet 来处理这个登录请求3. 编写服务器返回主页的逻辑4. 启动服务器验证 Cookie 和 Session 区别 理解Cookie 在前面的 HTTP 协议中,也理解过这个 Cookie,HTTP 协议自身是属于 “无状态”…

session是什么?

目录: 1.session 是啥? 2.怎么保存的? 3.如何运行? 4.有生命周期吗? 5.关闭浏览器会过期吗? 6.Redis代替文件存储session 7.分布式session的同步问题 session是啥? 首先,我大致的…

什么是session?

最近在学习node.js 的express框架,接触到了关于session方面的内容。翻阅了一些的博客,学到了不少东西,发现一篇博文讲的很好,概念内容摘抄如下: Session是什么 Session一般译作会话,牛津词典对其的解释是…

session的到底是做什么的?

前言: 今天就来彻底的学一些session是个啥东西,我罗列了几个需要知道的要点: 1.session 是啥? 2.怎么保存的? 3.如何运行? 4.有生命周期吗? 5.关闭浏览器会过期吗? 6.Redis代替文…

Session(超详细)

Session 会话 1.什么是 Session 会话? Session 就一个接口(HttpSession)。Session 就是会话。它是用来维护一个客户端和服务器之间关联的一种技术。每个客户端都有自己的一个 Session 会话。Session 会话中,我们经常用来保存用户登录之后的…

Session详解(重点)

什么是Session: (1)服务器会给每一个用户(浏览器)创建一个Session对象 比如我们现在都去访问百度,我们使用双核浏览器和谷歌浏览器同时访问百度这个网址,百度那边会有两个session,因为浏览器不一样&#x…

Session原理

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 开发工具与关键技术:Java,HTTP协议,session原理 撰写时间:2019-06-17 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~…

Session详解

Session(重点) 什么是Session: 服务器会给每一个用户(浏览器)创建一个Session对象一个Session独占一个浏览器,只要浏览器没有关闭,这个Session就存在用户登陆之后,整个网站它都可以访问–>保存用户的信…

Session详解,学习Session,这篇文章就够了(包含底层分析和使用)

说明:下面介绍session,我们使用到了游览器抓包,http的知识,如果不了解,请先简单了解下。http介绍,http请求,http响应。因为cookie和session是一对”好兄弟“,我们介绍session也要使用…

移动端VIN码识别技术的出现,为汽配供应链带来便捷

汽配供应链作为汽车后市场一大蓝海,成为众多商家的“必争之地”。在现今人工智能大数据的大环境下,拥抱科技,运用人工智能技术构建智能化数据平台成为提升企业行业竞争力的首选。 VIN码即车架号就是汽车的唯一的身份证,汽车从下线…

harrier 查看查看服务器状态,机油尺检查细节多多,嘉普力汽配工场教你如何正确查看机油尺...

平常我们总是说烧机油、机油消耗、机油增多,很多车主都快得"机油恐惧症"了,时刻担心自己的机油出现问题。既然担心就要查机油,那么你会看机油尺吗?今天,嘉普力汽配工场就教车主朋友们如何正确查看机油尺。 机…

汽车汽配行业B2B电子商务系统营销渠道自动化,综合提升B2B平台交易效率

汽车工业作为国家制造业的支柱之一,是衡量国家工业水平的基本指标。不断完善汽车工业整体的行业规范,促进汽车工业更稳定、更健康的发展,才能有效提升汽车工业的经济作用及影响力。 4S店模式,作为我国一直以来最主要的汽车销售模…

数商云采购系统对账结算功能介绍 | 缩短汽配企业结算周期,提高资金周转效率

近年来随着市场饱和度增加、竞争加剧,特别是信息技术的广泛发展,造成相当程度的平衡打破,使得通过平台化提升汽配供应链整体效率并建立主体间信任的可塑性增强,汽配供应链迎来新的变局。 作为名副其实的中小企业,汽配…

《汽修汽配管理系统——“汽修管理”模块》项目研发阶段性总结

完成模块功能:汽修管理(预约维修,客户接待,售后服务) 一、 功能实现 汽修管理主要包括预约维修,客户接待,售后服务 预约维修见图一, 该页面可查看老客户的资料,也可对第…

汽车汽配行业智慧供应链系统:提升企业效率,构建SCM平台数字化优势

过去几年,中国汽车产业经历了快速的发展阶段,已经成为全球最大的汽车市场。其中,汽车产业链、供应链有序、畅通的运转对中国汽车行业保持健康平稳发展起到了重要的支撑作用。随着新一轮技术革命到来,中国汽车供应链正面临着无限的…

汽车汽配行业经销商协同系统:实现汽配经销商销售管理全流程数字化

汽车经销商是从事汽车交易,取得汽车所有权的中间商。对于汽车制造企业而言,经销商是重要的资源,如何占有更多的经销商,是决定汽车企业市场开拓能力及成败的关键。随着国内汽车市场的竞争愈加激烈,汽车企业想要站稳脚跟…

成都榆熙教育:拼多多新手开店商品类目怎么选择?

拼多多成立至今已经快6年了,它的发展也是迅猛,某宝用了十几年获得的成就,它仅用6年时间就进行了超越,成为了国内前三的电商平台,因此也吸引了越来越多的个体户和商业户入驻,那么如何开一个拼多多店铺和会花…

百炼智能店店通(车后版)亮相2021AMR北京国际汽保汽配展 开启门店渠道拓展新时代

4月23-27日,由法兰通联展览(北京)有限公司主办的2021中国汽车服务产业新趋势千人大会和2021AMR北京国际汽车维修检测诊断设备、零部件及美容养护展览会(简称AMR北京国际汽保汽配展)落下帷幕。2021年展会展出规模达90,000平方米,为期四天的展期吸引952家参…

微信汽配电商小程序开发功能设计方案

随着互联网的不断发展,在汽车服务市场中的发展也紧跟着市场发展的脚步。汽车配件行业中,通过微信汽配电商小程序就可以实时查看具体的销售情况,以及收入的具体情况。 微信汽配电商小程序功能: 1、商城 商城中可以提供一些汽车周…