• 后台页面登录验证码失效问题


    环境:

    后端通过Servlet生成验证码图片返回给前端,同时将验证码的字符串格式保存到Session中,sessionId作为key。
    前端第一遍通过servlet请求得到验证码的图片格式,第二遍通过Servlet请求得到session中的字符串形式,同时验证该二维码是否过期(有效)。
    前端Vue框架,通过代理进行servlet的请求。

    问题

    与前端进行联调时,前端两次请求的sessionid不同,导致第二次的Servlet请求为空,并且登录接口中验证码也无法校验成功。

    处理过程

    在web.xml中加入Tomcat的跨域过滤器

    	<filter>
    		<filter-name>CorsFilter</filter-name>
    		<filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
    		<init-param>
    			<param-name>cors.allowed.origins</param-name>
    			<param-value>*</param-value>
    		</init-param>
    		<init-param>
    			<param-name>cors.allowed.methods</param-name>
    			<param-value>GET,POST,HEAD,OPTIONS,PUT</param-value>
    		</init-param>
    		<init-param>
    			<param-name>cors.allowed.headers</param-name>
    			<param-value>Content-Type,X-Requested-With,accept,Origin,Access-Control-Request-Method,Access-Control-Request-Headers</param-value>
    		</init-param>
    		<init-param>
    			<param-name>cors.exposed.headers</param-name>
    			<param-value>Access-Control-Allow-Origin,Access-Control-Allow-Credentials</param-value>
    		</init-param>
    		<init-param>
    			<param-name>cors.support.credentials</param-name>
    			<param-value>true</param-value>
    		</init-param>
    		<init-param>
    			<param-name>cors.preflight.maxage</param-name>
    			<param-value>10</param-value>
    		</init-param>
    	</filter>
    	<filter-mapping>
    		<filter-name>CorsFilter</filter-name>
    		<url-pattern>/*</url-pattern>
    	</filter-mapping>
    

    加入允许跨域的设置后,该问题依旧没有解决。

    在谷歌浏览器中查看两次请求中携带的cookie,结果如下

    浏览器提示该cookie被拦截了
    原因如下:此 Cookie 被阻止, 因为它的路径不是请求 URL 路径的完全匹配或超级目录。

    于是,获取该问题的出现于 Cookie的path相关,于是更改了项目的路径。
    将项目的路径从 /sdrs_xjyy/ 变为 /
    该问题解决。

    该问题的具体原理还待探讨.....

  • 相关阅读:
    mvc+dwz第七天
    mvc+dwz第六天
    mvc+dwz第五天
    mvc+dwz第四天
    笔记-基础配置与应用
    Entity Framework (EF) Core学习笔记 1
    EFCore学习记录--数据访问技术人门2
    EFCore学习记录--数据访问技术人门
    net core启动报错Unable to configure HTTPS endpoint. No server certificate was specified
    c#中const与readonly区别
  • 原文地址:https://www.cnblogs.com/wzbury/p/13884860.html
Copyright © 2020-2023  润新知