博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring boot 总结之跨域处理cors
阅读量:6879 次
发布时间:2019-06-26

本文共 1965 字,大约阅读时间需要 6 分钟。

hot3.png

背景

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

WebMvcConfigurer对象

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

@Configurationpublic 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@EnableWebMvcpublic class CorsConfiguration_2 extends WebMvcConfigurerAdapter {    @Override    public void addCorsMappings(CorsRegistry registry) {        registry.addMapping("/api/**");    }}

corsFilter

这种方式现在很少用

@Component@EnableWebMvcpublic 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;    }}

转载于:https://my.oschina.net/huaxian8812/blog/1618329

你可能感兴趣的文章
XVI Open Cup named after E.V. Pankratiev. GP of Ekaterinburg.
查看>>
iOS-中app启动闪退的原因
查看>>
iOS--高级技术
查看>>
struct内存对齐
查看>>
Ubuntu系统利用docker容器发布简单的应用
查看>>
学习网站
查看>>
HTML 5 <input> placeholder 属性
查看>>
应用场景是什么?怎样判断、描述一个产品的应用场景?
查看>>
Winform基础知识
查看>>
【ClickOnce】自定义前提条件 Creating Bootstrapper Packages
查看>>
css格式与布局
查看>>
但那不是爱
查看>>
Codeforces 935 C Fifa and Fafa
查看>>
浏览器根对象document之方法概述
查看>>
纯小白入手 vue3.0 CLI - 3.1 - 路由 ( router )
查看>>
ActiveMQ相关背景(转)
查看>>
深入理解Linux修改hostname(转)
查看>>
对TCP/IP网络协议的深入浅出归纳(转)
查看>>
北京,北京!
查看>>
有序的组合
查看>>