zoukankan      html  css  js  c++  java
  • 后台页面登录验证码失效问题

    环境:

    后端通过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/ 变为 /
    该问题解决。

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

  • 相关阅读:
    FFmpeg 协议初步学习
    HTML DOM(一):认识DOM
    ant 安装
    ubunut 查看port被哪个程序占用
    cacti气象图调整(批量位置调整、更改生成图大小等)
    内网port映射具体解释(花生壳)
    HDU 2647 Reward(图论-拓扑排序)
    白话经典算法系列之七 堆与堆排序
    Codeforces Round #191 (Div. 2)---A. Flipping Game
    Serverlet具体解释
  • 原文地址:https://www.cnblogs.com/wzbury/p/13884860.html
Copyright © 2011-2022 走看看