CORS全局跨域设置

举报
清雨小竹 发表于 2022/10/11 16:43:39 2022/10/11
【摘要】 方法一使用注解对接口进行跨域设置@CrossOrigin(origins = "*", maxAge = 3600)@RestController@RequestMapping("/test")public class TestController { @GetMapping("get") public String get() { // ... } }...

方法一

使用注解对接口进行跨域设置

@CrossOrigin(origins = "*", maxAge = 3600)
@RestController
@RequestMapping("/test")
public class TestController {
  
    @GetMapping("get")
    public String get() {
        // ...
    }
  
}

方法二

直接实现实现WebMvcConfigurer

@Configuration
public class CorsConfig implements WebMvcConfigurer {
  /**
    * 前端response中的自定义header信息默认同一域中可见
    * 在crossdomain跨域情况下需要在服务器端增加Access-Control-Expose-Headers的支持
    * 例如在springboot中需要使用addExposedHeader添加指定返回头:
    * @return
    */
   private CorsConfiguration buildConfig() {
      CorsConfiguration corsConfiguration = new CorsConfiguration();
      corsConfiguration.addAllowedOrigin("*");//允许跨域的域名,可以用*表示允许任何域名使用
      corsConfiguration.addAllowedHeader("*");//允许任何请求头
      corsConfiguration.addAllowedMethod("*");//允许任何方法(post、get等)
      corsConfiguration.addExposedHeader("Authorization");
      return corsConfiguration;
   }
​
​
   @Bean
   public CorsFilter corsFilter() {
      UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
      source.registerCorsConfiguration("/**", buildConfig());
      return new CorsFilter(source);
   }
​
   @Override
   public void addCorsMappings(CorsRegistry registry) {
      registry.addMapping("/**")
            .allowedOrigins("*")
//          .allowCredentials(true)
            .allowedMethods("GET", "POST", "DELETE", "PUT")
            .maxAge(3600);
   }
​
}
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。