同源策略(CORS):浏览器在解析发送的请求时,要求浏览器的路径与发送的请求的路径必须满足三个要求,即请求的协议、域名、端口号都相同,满足同源策略,才可以访问服务器,否则,只要有一个不相同,那么都是非同源就会报错。
当我们请求一个接口的时候,浏览器控制台出现如:Access-Control-Allow-Origin 报错提示信息的时候说明请求跨域了。
一般跨域问题可以后端修改代码解决,也可以前端通过代理解决。
在 SpringBoot 中,你可以在代码中增加如下配置类解决跨域问题:
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class CorsConfig implements WebMvcConfigurer {
@Bean
public WebMvcConfigurer corsConfigurer() {
return new WebMvcConfigurer() {
@Override
public void addCorsMappings(CorsRegistry registry) {
//添加映射路径
registry.addMapping("/**")
//放行哪些原始域
.allowedOriginPatterns("*")
//是否发送Cookie信息
.allowCredentials(true)
//放行哪些原始域(请求方式)
.allowedMethods("GET", "HEAD", "POST","PUT", "DELETE", "OPTIONS")
//放行哪些原始域(头部信息)
.allowedHeaders("*")
//表明在3600秒内,不需要再发送预检验请求,可以缓存该结果
//.maxAge(3600)
//暴露哪些头部信息(因为跨域访问默认不能获取全部头部信息)
.exposedHeaders("Header1", "Header2");
}
};
}
}
参考:
Java Demo示例:Springboot解决Access-Control-Allow-Origin跨域问题、浏览器同源策略详解
No ‘Access-Control-Allow-Origin‘ header is present on the requested resource关于vue跨域问题
SpringBoot 实现前后端分离的跨域访问
解决跨域配置问题:When allowCredentials is true, allowedOrigins cannot contain the special value