博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java中session保存和获取验证码获取的id不一致问题
阅读量:6686 次
发布时间:2019-06-25

本文共 1163 字,大约阅读时间需要 3 分钟。

前几个月由于自己学习JAVAEE的一部分内容,于是最近准备自己写个小项目,于是碰见了一些问题对于一个JAva菜鸟来说,我需要保存下来

什么问题类,就是我在注册中加入验证码而且是中文,四字成语验证码,

首先用Java生成验证码和验证码图片,调用验证码接口,把验证码使用session保存在客户端,并且发送图片到前端展示,

然后点击注册,前端传递用户输入的验证码到后台,后台获取用户输入的验证码和用session获取保存在客户端的验证码对比,正确与否

可是!!!!!!!!!!!!!!!!!!!!!!!可是,可是,可是

// 保存session代码

request.getSession().setAttribute("code_session", word);

// 获取session代码

String userCode_session = (String)request.getSession().getAttribute("code_session");

我保存了,获取的时候获取的是空,代码没毛病,对于我Java菜鸟来说得要找后台同事帮我,不过人家也郁闷,人家一般用的框架,底层淡忘了,不过说代码没毛病啊

同事建议我用cookie保存,可是cookie应该不安全吧,前端JS是可以获取到的,不过我换是准备试试,先把功能完成

结果!!!!!!!!!!!!!!!!!!!!!!!页面报500

原来cookie不支持中文保存,我记得前端貌似可以保存中文,后台居然不行,

算了,我用session保存

然后我们打印session的ID来看

// 打印session的ID代码

request.getSession().getId()

发现两次ID不是一个ID,保存的session的ID一直没变,可是获取的一直在变

花费三四个小时,我两找到了问题原因,原来人家说是存在跨域问题

于是解决方案

1.前端ajax中加入跨域

$.ajax({    type: 'POST',    url: url,    data: data,    dataType:'json',    success: callback,    error:function(e){      console.log(e)    },    xhrFields: {      withCredentials: true    }  });

2.后台代码(本接口中加入)

response.setHeader("Access-Control-Allow-Origin", request.getHeader("Origin"));

解决了,美滋滋

 

转载于:https://www.cnblogs.com/zhuyupingit/p/9454318.html

你可能感兴趣的文章
nrm使用webpack使用
查看>>
OC 线程操作 - GCD队列组
查看>>
一致性hash算法及其java实现
查看>>
Arraylist和linkedlist的区别(JDK源码阅读)
查看>>
PHP常见的加密技术
查看>>
Asp.net读取AD域信息的方法(一)
查看>>
两道题学习动态规划
查看>>
mysql实战31 | 误删数据后除了跑路,还能怎么办?
查看>>
ASP.NET MVC Razor
查看>>
Subscribe的第四个参数用法
查看>>
零值比较--BOOL,int,float,指针变量与零值比较的if语句
查看>>
vue-cli的项目加入骨架屏
查看>>
c#获取电脑硬件信息参数说明(硬盘篇 Win32_DiskDrive)
查看>>
3.SOAP和WSDL的一些必要知识
查看>>
使用element中的table组件,如何单击某一行数据时选中对应的复选框
查看>>
饿了么预点单是不是营业时间开始后5分钟内不接单,订单就自动取消
查看>>
1.3 简单的操作符
查看>>
13机器学习实战之PCA(1)
查看>>
tf.argmax()以及axis解析
查看>>
android使用Pull解析来自服务器的xml文件时出现错误以及解决方案
查看>>