文章目录
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;
}
跨域问题成功解决!!!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/94955.html