Ajax提交请求后台获取不到session中的值

Ajax提交请求后台获取不到session中的值,第1张

session 是服务端临时保存的数据,必须由服务端程序来读写

js 是客户端程序,即使使用ajax也是需要向后端程序传递数据,由后端程序写入session中,后端程序才能获取然后通过ajax回调值给js获得值

另外session是唯一的,每个用户只有一个临时的session,别人是获取不到的

注:以下内容基于以tomcat作为web服务器

session是>

String sessionId=requestgetSession()getId();

首先要获得request对象,然后调用getSession()方法。

Session直接翻译成中文比较困难,一般都译成时域。在计算机专业术语中,Session是指一个终端用户与交互系统进行通信的时间间隔,通常指从注册进入系统到注销退出系统之间所经过的时间。以及如果需要的话,可能还有一定的 *** 作空间。

具体到Web中的Session指的就是用户在浏览某个网站时,从进入网站到关闭这个网站所经过的这段时间,也就是用户浏览这个网站所花费的时间。因此从上述的定义中我们可以看到,Session实际上是一个特定的时间概念。

需要注意的是,一个Session的概念需要包括特定的客户端,特定的服务器端以及不中断的 *** 作时间。A用户和C服务器建立连接时所处的Session同B用户和C服务器建立连接时所处的Session是两个不同的Session。

session的工作原理

(1)当一个session第一次被启用时,一个唯一的标识被存储于本地的cookie中。

(2)首先使用session_start()函数,PHP从session仓库中加载已经存储的session变量。

(3)当执行PHP脚本时,通过使用session_register()函数注册session变量。

(4)当PHP脚本执行结束时,未被销毁的session变量会被自动保存在本地一定路径下的session库中,这个路径可以通过phpini文件中的sessionsave_path指定,下次浏览网页时可以加载使用。

因为Session是保存在服务端的,js只能通过ajax读取Session。不过一般也不建议这么做,你可以把前端验证码输入的值传给后端,后端判断是否正确,返回是否正确就行了。因为你直接把验证码发给前端,这样就可以使用js得到验证码,并自动输入,就失去验证码的意义了。

JScript code

var id = '<%=Session["UserName"] %>';

混写就OK了。

很多小菜鸟们在使用比如vue的axios对后端进行异步请求时候,比如做到关于注册的验证码的业务时候,明明在后端存进了session时候,但是第二次请求另一个接口的时候session取不到了(null),那是因为前端在请求的时候没有带上cookie,对于后端来说就产生了两个不同的session

那这种情况怎么解决呢?

拿微信小程序举例来说

1、首先我们可以全局设置一个空cookie

2、在第一次请求的接口中获取这次用到的session的id并且作为数据返回

3、在微信小程序中处理业务的js中接受返回的id并且赋值给cookie

4、在第二次请求的时候将cookie封装到请求头中

这样子呢,这种简单粗暴的方式就可以解决不同controlle会产生不同的session的问题啦

以上就是关于Ajax提交请求后台获取不到session中的值全部的内容,包括:Ajax提交请求后台获取不到session中的值、服务端session笔记、java如何获取sessionid等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/web/9269004.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)