Spring boot 总结之跨域处理cors

背景

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

WebMvcConfigurer对象

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

1@Configuration 2public class CorsCongiguration { 3 @Bean 4 public WebMvcConfigurer corsConfigurer() { 5 return new WebMvcConfigurerAdapter() { 6 @Override 7 public void addCorsMappings(CorsRegistry registry) { 8 registry.addMapping("/api/**"); // 允许所有第三方域名访问该接口 9 // .allowedOrigins("http://domain2.com")//指定来源域名 10 // .allowedMethods("PUT", "DELETE") 11 // .allowedHeaders("header1", "header2", "header3") 12 // .exposedHeaders("header1", "header2") 13 // .allowCredentials(false).maxAge(3600); 14 } 15 }; 16 } 17}

继承WebMvcConfigurerAdapter

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

1@Configuration 2@EnableWebMvc 3public class CorsConfiguration_2 extends WebMvcConfigurerAdapter { 4 5 @Override 6 public void addCorsMappings(CorsRegistry registry) { 7 registry.addMapping("/api/**"); 8 } 9}

corsFilter

这种方式现在很少用

1@Component 2@EnableWebMvc 3public class CorsFilterCongiguration extends CorsFilter { 4 5 public CorsFilterCongiguration(CorsConfigurationSource configSource) { 6 super(configSource); 7 } 8 9 @Bean 10 public FilterRegistrationBean corsFilter() { 11 UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); 12 CorsConfiguration config = new CorsConfiguration(); 13 config.setAllowCredentials(true); 14 config.addAllowedOrigin("*"); 15// config.addAllowedOrigin("http://domain1.com"); 16 config.addAllowedHeader("*"); 17 config.addAllowedMethod("*"); 18 source.registerCorsConfiguration("/api/**", config); 19 FilterRegistrationBean bean = new FilterRegistrationBean(new CorsFilter(source)); 20 bean.setOrder(0); // 必须在所有Filter之前 21 return bean; 22 } 23 24}
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

Cors跨域解决

一、浏览器跨域问题产生1、跨源资源共享(CORS)中文文档:https://developer.mozilla.org/zhCN/docs/Web/HTTP/Access_control_CORS2、什么是浏览器跨域问题指的是浏览器不能执行其他网站的脚本。JavaScript出于安全方面的考虑,不允许跨域调用其他页面的对象,即同源策略。就好比我

什么是跨域以及如何解决?通俗易懂带你彻底搞定

什么是跨域以及如何解决?通俗易懂带你彻底搞定现在的web项目,很多都是前后端分离,特别容易出现跨域问题那么什么是跨域问题呢?本篇文章带你彻底从本质上弄明白什么是跨域问题以及如何解决一跨域有什么现象?我们先看一下

springboot的跨域

https://www.cnblogs.com/520playboy/p/7306008.html1、对于前后端分离的项目来说,如果前端项目与后端项目部署在两个不同的域下,那么势必会引起跨域问题的出现。针对跨域问题,我们可能第一个想到的解决方案就是jsonp,并且以前处理跨域问题我基本也是这么处理。但是jsonp方式也同样有不足,不管是对