Springboot总结之跨域处理cors的方法

背景

为大峪等地区用户提供了全套网页设计制作服务,及大峪网站建设行业解决方案。主营业务为网站设计、成都做网站、大峪网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!

现在做的很多项目都是前后端分离的,这就引出一个很常见的问题,我们的页面和接口是在不同域名下的,当我们通过ajax访问后端接口的时候就会出现跨域问题,这种问题我们怎么解决呢?一般来说就是cors和jsonp这两种方案。Spring简化了cors的配置,接下来我们来看一下它提供的cors。

跨域问题描述

Web开发经常会遇到跨域问题,解决方案有:jsonp,iframe,CORS等等。

CORS 与 JSONP 相比:

1、 JSONP 只能实现 GET 请求,而 CORS 支持所有类型的 HTTP 请求。
2、 使用 CORS,开发者可以使用普通的 XMLHttpRequest 发起请求和获得数据,比起 JSONP 有更好的 错误处理。
3、 JSONP 主要被老的浏览器支持,它们往往不支持 CORS,而绝大多数现代浏览器都已经支持了 CORS。

WebMvcConfigurer对象

我们可以初始化一个WebMvcConfigurer对象来配置我们的cors映射。

@Configuration
public class CorsCongiguration {
  @Bean
  public WebMvcConfigurer corsConfigurer() {
    return new WebMvcConfigurerAdapter() {
      @Override
      public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/api/**"); // 允许所有第三方域名访问该接口
        // .allowedOrigins("http://domain2.com")//指定来源域名
        // .allowedMethods("PUT", "DELETE")
        // .allowedHeaders("header1", "header2", "header3")
        // .exposedHeaders("header1", "header2")
        // .allowCredentials(false).maxAge(3600);
      }
    };
  }
}

继承WebMvcConfigurerAdapter

这种方式跟上面的方式很类似

@Configuration
@EnableWebMvc
public class CorsConfiguration_2 extends WebMvcConfigurerAdapter {

  @Override
  public void addCorsMappings(CorsRegistry registry) {
    registry.addMapping("/api/**");
  }
}

corsFilter

这种方式现在很少用

@Component
@EnableWebMvc
public class CorsFilterCongiguration extends CorsFilter {

  public CorsFilterCongiguration(CorsConfigurationSource configSource) {
    super(configSource);
  }

  @Bean
  public FilterRegistrationBean corsFilter() {
    UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
    CorsConfiguration config = new CorsConfiguration();
    config.setAllowCredentials(true);
    config.addAllowedOrigin("*");
//    config.addAllowedOrigin("http://domain1.com");
    config.addAllowedHeader("*");
    config.addAllowedMethod("*");
    source.registerCorsConfiguration("/api/**", config);
    FilterRegistrationBean bean = new FilterRegistrationBean(new CorsFilter(source));
    bean.setOrder(0); // 必须在所有Filter之前
    return bean;
  }

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持创新互联。

网站标题:Springboot总结之跨域处理cors的方法
当前地址:https://www.cdcxhl.com/article0/pisdoo.html

成都网站建设公司_创新互联,为您提供静态网站虚拟主机全网营销推广软件开发营销型网站建设定制网站

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都定制网站建设