SpringBoot跨域CORS设置:实现根据来源地址返回对应的Access-Control-Allow-Origin允许网址

Posted xiaoyanbot

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringBoot跨域CORS设置:实现根据来源地址返回对应的Access-Control-Allow-Origin允许网址相关的知识,希望对你有一定的参考价值。

说明:Boot 2.4 要使用通配符,需要使用新增的方法 allowedOriginPatterns

用于Boot 2.4版本以上配置

在config目录下增加配置类

package com.example.demo24.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class GlobalCorsConfig implements WebMvcConfigurer {
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedOriginPatterns("*") // SpringBoot2.4.0 [allowedOriginPatterns]代替[allowedOrigins]
                .allowedMethods("*")
                .allowCredentials(true);
    }
}

用于Boot2.4版本以下配置

在config目录下增加配置类

package com.example.demo.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class GlobalCorsConfig implements WebMvcConfigurer
{
            @Override
            //重写父类提供的跨域请求处理的接口
            public void addCorsMappings(CorsRegistry registry) {
                //添加映射路径
                registry.addMapping("/**")
                        //放行哪些原始域l
                        .allowedOrigins("*")
                        //是否发送Cookie信息
                        .allowCredentials(true);
            }
        }

另外方式:匿名方法方式(适用于Boot 2.4版本以下)

适用于 SpringBoot 2.4.0 以下版本; 之上版本需要重载方法。

在config目录下增加配置类

package com.example.demo.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class GlobalCorsConfig
{
    @Bean
    public WebMvcConfigurer corsConfigurer() {
        return new WebMvcConfigurer() {
            @Override
            //重写父类提供的跨域请求处理的接口
            public void addCorsMappings(CorsRegistry registry) {
                        //添加映射路径
                registry.addMapping("/**")
                        //放行哪些原始域
                        .allowedOrigins("*")
                        //是否发送Cookie信息
                        .allowCredentials(true)
                        //放行哪些原始域(请求方式)
                        .allowedMethods("GET","POST", "PUT", "DELETE")
                        //放行哪些原始域(头部信息)
                        .allowedHeaders("*");
                        //暴露哪些头部信息(跨域访问默认不能获取全部头部信息)
                        //.exposedHeaders("Header1", "Header2");
            }
        };
    }
}

以上是关于SpringBoot跨域CORS设置:实现根据来源地址返回对应的Access-Control-Allow-Origin允许网址的主要内容,如果未能解决你的问题,请参考以下文章

SpringBoot CORS 跨域 @CrossOrigin

SpringBoot跨域(CORS)支持:注解@CrossOrigin

SpringBoot 中通过 CORS 解决跨域问题

springboot 跨域

跨域资源共享 (CORS) - 我在这里遗漏了啥吗?

跨域问题