脚本之家 服务器常用软件
微信 投稿 交流社区 在线工具

Spring boot 总结之跨域处理cors的方法

转载  发布时间:2018年02月07日 16:50:50   作者:花_现   我要评论

本篇文章主要介绍了Spring boot 总结之跨域处理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;
  }

}

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

  • spring
  • boot
  • cors

相关文章

  • java使用JMF实现音乐播放功能

    这篇文章主要为大家详细介绍了java使用JMF实现音乐播放的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • Java获取文件的类型和扩展名的实现方法

    这篇文章主要介绍了Java获取文件的类型和扩展名的实现方法的相关资料,需要的朋友可以参考下
    2017-02-02
  • java实现的满天星效果实例

    这篇文章主要介绍了java实现满天星效果的方法,涉及Java绘图的应用,非常具有实用价值,需要的朋友可以参考下
    2014-11-11
  • hibernate和mybatis对比分析

    通过本文给分享了hibernate和mybatis对比分析,从开发对比,系统调优对比,对象管理与抓取策略,缓存机制对比等方面给大家详细介绍,需要的朋友参考下吧
    2017-09-09
  • spring-session简介及实现原理源码分析

    这篇文章主要介绍了spring-session简介及实现原理源码分析,具有一定参考价值,需要的朋友可以了解下。
    2017-11-11
  • Java自动读取指定文件夹下所有文件的方法

    这篇文章主要为大家详细介绍了Java自动读取指定文件夹下所有文件的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-02-02
  • Spring Boot 简介(入门篇)

    Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。下面通过本文给大家介绍spring boot相关知识,需要的的朋友参考下吧
    2017-04-04
  • Java异常的几个谜题_动力节点Java学院整理

    本文给大家收藏整理java异常的几个谜题,非常不错,具有参考借鉴价值,需要的朋友参考下吧
    2017-06-06
  • 详解spring mvc 请求转发和重定向

    这篇文章主要介绍了详解spring mvc 请求转发和重定向,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-02-02
  • java 基础知识之IO总结

    这篇文章主要介绍了java 基础知识之IO总结的相关资料,Java中的I/O分为两种类型,一种是顺序读取,一种是随机读取,需要的朋友可以参考下
    2017-03-03

最新评论