1.问题描述
当我们访问后端接口的时候出现no-referrer-when-downgrade,那么就说明我们遇到了跨域问题。
![](https://img.haomeiwen.com/i28315931/e17f6e7851207cd7.png)
2.问题原因
我们前端的端口是8080,后端的端口是8888。
8080访问8888就会认为是访问了另外一个域名(IP地址)(访问一个资源必须是IP地址+端口),浏览器就会认为这是一个不安全的访问。
3.解决办法
在SpringBoot项目中添加配置,统一让8080端口能够访问8888;
添加一个自定义配置类,该类实现WebMvcConfigurer接口,然后重写他的addCorsMappings方法。将前端访问的路径添加进去。
//处理跨域问题的类
@Configuration
public class WebConfig implements WebMvcConfigurer {
/**
* 处理跨域问题
* @param registry
*/
@Override
public void addCorsMappings(CorsRegistry registry) {
//跨域配置,不可设置为*,不安全, 前后端分离项目,可能域名不一致
//本地测试 端口不一致 也算跨域
registry.addMapping("/**")
//配置访问的地址,*代表所有的都可以访问
.allowedOrigins("http://localhost:8080")
//.allowedOriginPatterns("*") 所有地址都可以访问
//允许的请求方式
.allowedMethods("POST", "GET", "PUT", "OPTIONS", "DELETE")
//是否支持跨域Cookie
.allowCredentials(true)
// 跨域允许时间
.maxAge(3600);
}
}
4.遇到的问题
配置所有路径都可以访问的时候:刚开始用的是allowedOrigins(""),发现并没有用,通过大量查阅资料才发现,这是我springboot版本的问题,版本说明,
用”“号必须用allowedOriginPatterns("*")才能支持所有路径访问。
网友评论