session的工作原理session缓存浏览器缓存

news/2024/7/10 2:30:22 标签: session, 缓存, 后端, 前端, vue

实际应用项目:http://github.crmeb.net/u/long

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://…。/xxx;jSession=ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764;

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

  http://…。。/xxx?jSession=ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764

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

  <a class=session11.png" src="https://img-blog.csdnimg.cn/img_convert/1ac048c29a9f2f2a9f80d95d96a1f09b.png" />



Session作用

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

  1、判断用户是否登录。

  2、购物车功能。

Session实例问题

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

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

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

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

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

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


http://www.niftyadmin.cn/n/908710.html

相关文章

解析wamp的php.ini设置不生效的原因

你是否有过这样的经历&#xff0c;当你打开wamp的php.ini&#xff0c;并进行参数修改之后。再回到命令去运行你的php脚本&#xff0c;却发现你的设置居然不生效&#xff1f; 如果有这样的情况&#xff0c;那你得先了解php的两种运行运行环境&#xff0c;一个在命令终端上&#…

宝塔切换命令行PHP版本切换网站PHP版本

实际应用项目&#xff1a;CRMEB打通版: &#x1f525;&#x1f525;&#x1f525; CRMEB打通版v4免费开源商城系统&#xff0c;UINAPPthinkphp6框架商城&#xff0c;系统可商用&#xff1b;包含小程序商城、H5商城、公众号商城、PC商城&#xff0c;支持分销、拼团、砍价、秒杀、…

首先,编写一个类ChongZai,该类中有3个重载的方法void print();其次, 再编写一个主类来测试ChongZai类的功能...

//计算器 jisuanqi jsqnew jisuanqi();System.out.println("2和3 中最大的是&#xff1a;"jsq.max(2, 3));System.out.println("2/3/10 中最大的是&#xff1a;"jsq.max(2, 3, 10)); System.out.println("2.3和4.5 中最大的是&#xff1a;&quo…

Chrome“ERR_HTTP2_PROTOCOL_ERROR”解决

实际应用项目&#xff1a;http://github.crmeb.net/u/long 打开 chrome://flags/ 页面找到 Block insecure private network requests. 和 Enable Trust Tokens 两项将其值从 Default 改为 Enable点右下角的 ReLaunch 按钮重启浏览器重新打开报错的网站如果打不开&#xff0c;在…

一个资深前端的学习总结(转载)

中国的IT圈里有句话叫做“程序员吃的是青春饭”&#xff0c;许多IT公司也不愿意雇佣大龄程序员。因此&#xff0c;在有限的时间快速掌握高级技术变得非常重要。为了帮助新入行的小白快速走向技术人生的巅峰&#xff0c;这里分享一篇资深前端工作师总结的前端学习经验。 这里主要…

PHP怎样使用Xdebug进行调试PHP调试方法Xdebug调试

实际应用项目&#xff1a;http://github.crmeb.net/u/long 对有有经验的程序员&#xff0c;使用echo、print_r()、print_f()、var_dump()等函数足以调试php代码&#xff0c;如果你不喜欢这样的话&#xff0c;xdebug就是一个非常好的php调试工具。 1 下载Xdebug扩展 将phpinfo(…

如何更高效的使用谷歌解决问题

面对问题的态度 在自学编程的过程中&#xff0c;不可避免的会遇到各种大大小小的问题。遇到了问题&#xff0c;不要害怕也不要焦虑&#xff0c;而是要保持一种兴奋的状态。 如果把编程比作一场游戏&#xff0c;那编程遇到的问题就好比是游戏中的怪兽。杀死了怪兽&#xff0c;就…

遇到build的问题

可以打开C/CBUILD里面把build直接改成cmd&#xff0c;cmd path是有的 转载于:https://www.cnblogs.com/caimuqing/p/5894108.html