1、注解方式
使用 @CrossOrigin
注解标注在 Controller或者 Mapping
@RestController
@CrossOrigin
@RequestMapping("/ctro")
public class Controller{
@CrossOrigin
@GetMapping(value = "/test")
public String test(){
return "Nihao";
}
}
2、实现 WebMvcConfigurer 接口
这种方式问题比较多,如果没有生效,需要考虑 是不是有其他组件模块影响了跨域,例如(Shiro、Sa-Token等过滤器会影响)
@Configuration
@EnableWebMvc
public class CorsConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("*") // 允许所有域名访问,可以根据需求进行配置
.allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS") // 允许的请求方法
.allowedHeaders("*") // 允许的请求头
.allowCredentials(true) // 是否允许发送Cookie
.maxAge(3600); // 预检请求的有效期,单位秒
}
}
3、使用 FilterRegistrationBean 过滤器 (推荐)
@Configuration
public class CorsConfig {
@Bean
public FilterRegistrationBean corsFilter() {
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
CorsConfiguration config = new CorsConfiguration();
config.setAllowCredentials(true);
// 允许所有域名访问,可以根据需求进行配置, 使用setAllowedOrigin会出现IllegalArgumentException
config.addAllowedOriginPattern("*");
config.addAllowedHeader("*");
config.addAllowedMethod("*");
source.registerCorsConfiguration("/**", config);
// 使用FilterRegistrationBean包装CorsFilter
FilterRegistrationBean bean = new FilterRegistrationBean(new CorsFilter(source));
// 设置Filter的优先级,值越小优先级越高
bean.setOrder(0);
return bean;
}
}
原文地址:https://blog.csdn.net/qq_40739917/article/details/134673273
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_5945.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。