//

Information for details

谈一谈Session的工作原理

Session 工作原理


1、创建Session

  当用户访问到一个服务器,如果服务器启用Session,服务器就会为该用户创建一个SESSION,在创建这个SESSION的时候,服务器首先检查这个用户发来的请求里是否包含了一个SESSION ID,如果包含了一个SESSION ID则说明之前该用户已经登陆过并为此用户创建过SESSION,那服务器就按照这个SESSION ID把这个SESSION在服务器的内存中查找出来,如果客户端请求里不包含有SESSION ID,则该客户是新用户,为该用户端创建一个SESSION并生成一个与此SESSION相关的SESSION ID。这个SESSION ID是唯一的、不重复的、毫无规律的字符串,这个SESSION ID将被在本次响应中返回到客户端保存,而保存这个SESSION ID的正是COOKIE,这样在交互过程中浏览器可以自动的按照规则把这个标识发送给服务器。

  2、使用Session

  我们知道在IE中,我们可以在工具的Internet选项中把Cookie禁止,那么会不会出现把客户端的Cookie禁止了,那么SESSIONID就无法再用了呢?其实是可以有其他机制在COOKIE被禁止时仍然能够把Session id传递回服务器。

  经常被使用的一种技术叫做URL重写,就是把Session id直接附加在URL路径的后面一种是作为URL路径的附加信息,表现形式为:

  http://www.xxxs.com/xxx;jSession=KDigrbWnF6ZC8DrjCPrPPxA3vV647yGkQFHexYgNclSMhpiL6l8cvmVSssV2tSTL!-1617674918;

  另一种是作为查询字符串附加在URL后面,表现形式为:

  http://www.xxxs/xxx?jSession=kTlnuSTMm8fPiX0AR8mQGcaumORnazng600MSj59j4KzYuCusTNfIlxKfqSliuEtMTDM-1617675235

  还有一种就是表单隐藏字段。就是服务器会自动修改表单,添加一个隐藏字段,以便在表单提交时能够把Session id传递回服务器。

Session作用

  Session的根本作用就是在服务端存储用户和服务器会话的一些信息。典型的应用有:

  1、判断用户的登录状态。

  2、商城购物车功能。

Session实例问题

  现有系统A,B; 假设A系统是可以独立运行的web系统,即可以和浏览器直接处理session, B系统是基于mobile的,需要调用A系统的功能接口,

  在保持A不改变的情况下,即登陆验证,session存储都不变的情况下,B系统能处理前端用户的请求。

  这里提供的方案是使用PHP实现

  在用户登陆成功后,将保存的session的session-id返回给B系统,然后B系统每次请求其他接口都带session_id。

  A系统在session_start前加上session_id(session_id);

  这样B系统就能安全的调用A


云南然成科技有限公司是一家云南本土的软件开发公司,公司成立于2015年初,2017年获得云南省科技厅、省财政厅、省国税局、地税局等机构认定的高新技术企业。2021年审核中再次获得高新技术企业认定。公司定位于高端网站设计、系统开发、APP开发、微信公众号、微信小程序开发。拥有多个软著权,公司先后为多家事业单位提供服务,比如会泽文化馆、宣威文化馆、中科院昆明植物研究所等。其中中国科学院昆明植物研究所已经进行了长达8年的合作,并且还持续合作中!

  然成科技一直坚持原创、独立开发,拒绝一切开源、模版化建站,欢迎咨询!

  • 滇公网安备 53010202001388号