文章目录
- 1. 跨域问题出现与解决
1. 跨域问题出现与解决
检查SpringBoot中的MVC配置。
public void addCorsMappings(CorsRegistry registry) {
//允许跨域访问资源定义
registry.addMapping("/**")
//(只允许本地的指定端口访问)允许所有
.allowedOrigins("*")
// 允许所有方法
.allowedMethods("*")
//允许所有请求头
.allowedHeaders("*")
.maxAge(3600);
}
发现后端已经允许跨域了。所以排除后端未进行跨域解决的猜想。
接着查看后端日志
这里出现了两次缺少token,检查浏览器网络信息
发现这里有两次请求,点开第一个请求
第一个请求携带了token,但是并未成功请求
接着查看第二个请求
第二个请求并无token,并且状态码为500。
Tps:
options 请求就是预检请求,可用于检测服务器允许的 http 方法。当发起跨域请求时,由于安全原因,触发一定条件时浏览器会在正式请求之前自动先发起 OPTIONS 请求,即 CORS 预检请求,服务器若接受该跨域请求,浏览器才继续发起正式请求。
因此,应该是因为OPTIONS请求未携带token,被SpringMCV的拦截器拦截下来,导致预检请求(CORS 预检请求)未成功,因此报了跨域错误。
在拦截器中打印一下请求的方式
通过后端日志发现两个无token均为OPTIONS请求,并且两个OPTIONS请求均无通过拦截器,因此我在SpringMVC的拦截器中尝试放行OPTIONS请求,看问题能不能解决。
if ("OPTIONS".equals(request.getMethod())) {
//true是直接放行
return true;
}
跨域问题成功解决!!!