浏览器出于对安全的考虑,不允许对当前域名之外的域名资源进行 AJAX 调用
什么情况下跨域
- 协议不同
- 主域名不同
- 端口不同
- 子域名不同
- 域名对应的ip不同
解决跨域配置(全局)
第一种:不做任何限制
@Configuration
public class CorsContext implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedMethods("*")
.allowedHeaders("*")
.allowedOrigins("*");
}
}
第二种:修改对应参数做限制
@Configuration
public class CorsContext implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/api/**") // 需要做跨域处理的url
.allowedOrigins("http://domain2.com") // 可以访问此接口的域名
.allowedMethods("PUT", "DELETE") // 允许通过的方法
.allowedHeaders("header1", "header2", "header3") // 需要做跨域请求时配置的请求头
.exposedHeaders("header1", "header2") // 设置响应请求头
.allowCredentials(true) // 是否支持用户平凭据
.maxAge(3600); // 授权的时间
}
}