springboot解决跨域
@Configuration
public class CORSConfiguration extends WebMvcConfigurationSupport {
/*
* 这里主要为了解决跨域问题,所以重写addCorsMappings方法
*/
@Override
protected void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("*")
.allowedMethods("GET", "HEAD", "POST","PUT", "DELETE", "OPTIONS")
.allowedHeaders("*")
.exposedHeaders("access-control-allow-headers",
"access-control-allow-methods",
"access-control-allow-origin",
"access-control-max-age",
"X-Frame-Options")
.allowCredentials(false).maxAge(3600);
super.addCorsMappings(registry);
}
}
gateway解决跨域
gateway:
discovery:
locator:
enabled: true
# 跨域
globalcors:
corsConfigurations:
'[/**]':
# 允许携带认证信息
#allow-credentials: true
# 允许跨域的源(网站域名/ip),设置*为全部
allowedOrigins: "*"
# 允许跨域的method, 默认为GET和OPTIONS,设置*为全部
allowedMethods: "*"
# 允许跨域请求里的head字段,设置*为全部
allowedHeaders: "*"
nginx解决跨域
加入server中
server {
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods 'GET,POST';
add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';
}
接口注解解决跨域
贴在接口方法上面即可,也可以设置参数.(不写默认支持当前接口跨域)
@CrossOrigin(origins = “localhost:abc.com”, maxAge = 3600)
origins :支持可访问域列表
maxAge :准备响应前的缓存持续的最大时间(单位/秒)
springboot过滤器解决跨域
@Configuration
public class GlobalCorsConfig {
@Bean
public CorsFilter corsFilter() {
CorsConfiguration filterConfig = new CorsConfiguration();
filterConfig .addAllowedOrigin("*");
filterConfig .setAllowCredentials(true);
filterConfig .addAllowedMethod("*");
filterConfig .addAllowedHeader("*");
filterConfig .addExposedHeader("*");
UrlBasedCorsConfigurationSource configSource = new UrlBasedCorsConfigurationSource();
configSource.registerCorsConfiguration("/**", filterConfig );
return new CorsFilter(configSource);
}
}