最近找了一个SSM的小项目练手,后端是在idea上,服务器用的tomcat,前端在VScode上。
项目是一个基础项目,但其中涉及了跨域问题,在一通搜索资料后解决了问题,主要过程如下:
问题表现是发送登录请求之后,浏览器会报一个403,错误信息如下图所示:
之后我就写了一个CorsFilter,在里面设置了允许的Origin,该类实现了Filter,代码如下图所示:
照理说,里面已经明确写出了响应允许localhost:5500的访问,这时应该已经解决了跨域问题,但是测试之后发现并没有。
最后解决方法是在SpringMVC的配置类中,重写了addCorsMappings方法来解决的,具体代码如下:
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("http://localhost:5500", "http://127.0.0.1:5500")
.allowedMethods("GET", "POST", "HEAD", "OPTIONS", "PUT", "DELETE")
.allowedHeaders("*")
.exposedHeaders("*")
.allowCredentials(true)
.maxAge(3600);
}
问题成功解决了,但是我仍然想不通,为什么上面的跨域过滤器不起作用,因为还没学到SpringBoot,网上大部分解决方案都针对的是SpringBoot框架,对于我这种小白真的很难活学活用到SSM上,不过好在问题成功解决了。