session用起来的执行原理到底是怎么样的?

session用起来的执行原理到底是怎么样的?

我完全看不出来session的作用,课程视频16:35时候虽然使用的是login_session,但还是要传入headers和data,这和不用session有什么区别吗?token已经在data里了,为什么还要用session呢?看了一节课,只看到了代码的步骤,但之中原理完全不明不白,这怎么吸收得了知识?

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
好帮手慕美 2020-08-24 15:04:41

同学,你好。

1、当用户请求页面,一般需要先登录,用户第一次输入用户名和密码之后,前台发送post请求,后台获取用户信息,验证通过会开辟一块session空间来储存用户数据,并且同时生成一个cookie字符串,由后台返回给前台,前台接收后,会把这个cookie字符串储存到浏览器的cookie空间中,这个cookie就相当于一把钥匙,可以打开后台存储对应用户信息的锁,当用户下一次请求的时候,客户端便会自动携带这个cookie去请求服务器,服务器识别后,就会读取session中的用户信息,这样用户就可以直接访问,就不需要再输入用户名密码来验证身份了。

2、设置session可以实现登录状态保持,使用session会保存服务器返回的数据,包括cookies,这样在请求输入用户名密码请求登录时,就不必再去分析网页得到cookies,直接使用session。

3、header是设置的请求头,在请求页面时是需要携带的;data中是用户名,密码,token等数据,是登录需要的数据

4、当服务器向浏览器传送cookie的时候,很容易被劫持,并不是绝对的安全,在大型的项目中,服务器往往不只一台,如果第一次请求,用户信息被保存在了服务器1的session空间中,但是第二次请求被分流到了服务器2,这样就获取不到用户信息了,依然要重新登录,因此使用token会好一些。token只是以字符串的形式存在,不要服务器再开辟空间,并且相对更安全,

如果我的回答解决了您的疑惑,请采纳!祝学习愉快~~~~


  • 提问者 江民川 #1
    老师的回答让我明白了不少。 第4点中还有个疑问,如果是之前保存在服务器1中,第二次请求跑去了服务器2那里,那就算用token,服务器2又怎么方便读取历史登录的session呢
    2020-08-24 15:37:49
  • 好帮手慕美 回复 提问者 江民川 #2
    同学,你好。session的存储是需要空间的,token只是以字符串的形式存在,不要服务器再开辟空间。浏览器第一次访问服务器时,会传过来一个唯一表示ID,服务端通过算法,加密钥,生成一个token,通过BASE64编码后将token发送给客户端。客户端会将token保存起来,下次请求带着token,服务器收到请求会用相同的算法去验证token,如果通过就继续执行。 祝学习愉快~~~~
    2020-08-24 16:06:16
  • 提问者 江民川 回复 好帮手慕美 #3
    老师您在第1点中,说:“客户端便会自动携带这个cookie去请求服务器,服务器识别后,就会读取session中的用户信息”,那第4点里服务器2究竟是验证完了token就行,还是要去服务器1里调取session或再自己生成一个session呢?
    2020-08-24 16:09:12
提问者 江民川 2020-08-24 14:48:17

或者问,听说如果不用session就要反复设置cookies,cookies也就是一个参数的事,很麻烦吗,如果老师能举这个反例就更好了,我也没觉得相比之下session哪里是更简便高效啊,

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
4.入门主流框架Scrapy与爬虫项目实战
  • 参与学习           人
  • 提交作业       107    份
  • 解答问题       1672    个

Python最广为人知的应用就是爬虫了,有趣且酷的爬虫技能并没有那么遥远,本阶段带你学会利用主流Scrapy框架完成爬取招聘网站和二手车网站的项目实战。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师