Spring Boot 跨域配置

配置Spring Boot应用程序以支持跨源资源共享(CORS)。

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.reactive.CorsWebFilter;
import org.springframework.web.cors.reactive.UrlBasedCorsConfigurationSource;
import org.springframework.web.util.pattern.PathPatternParser;

import java.util.Arrays;

// 处理跨域的配置类
@Configuration
public class CorsConfig {

    @Bean
    public CorsWebFilter corsFilter() {
        CorsConfiguration config = new CorsConfiguration(); // 创建CORS配置
        config.addAllowedMethod("*"); // 允许所有HTTP方法
        config.setAllowCredentials(true); // 允许cookies
        // @todo 将下面的通配符替换为线上环境的真实域名
        config.setAllowedOriginPatterns(Arrays.asList("*")); // 允许所有域名
        config.addAllowedHeader("*"); // 允许所有头

        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(new PathPatternParser());
        source.registerCorsConfiguration("/**", config); // 为所有路径注册CORS配置

        return new CorsWebFilter(source); // 创建CorsWebFilter
    }
}

定义了一个CorsConfig配置类,在这个类中有一个corsFilter的Bean,这个Bean创建了一个CorsWebFilter,这是Spring WebFlux中用于处理反应式Web应用程序CORS的组件。
以下是代码的详细分析:

  1. 使用@Configuration注解指示该类是一个配置类。
  2. 使用@Bean注解在方法corsFilter上,表示该方法将返回一个Bean,该Bean会被Spring容器管理。
    代码的具体行为如下:
  • 创建了一个CorsConfiguration对象来存储CORS的配置信息。
  • config.addAllowedMethod("*")允许所有的HTTP方法(GET, POST, PUT, DELETE等)。
  • config.setAllowCredentials(true)允许请求携带credentials信息(如cookies)。
  • config.setAllowedOriginPatterns(Arrays.asList("*"))允许来自所有域的请求。注意这里使用了*,这是不安全的,因为它允许任何来源的请求。在实际部署中,应该将其替换为实际前端的域名。
  • config.addAllowedHeader("*")允许所有自定义的HTTP头部信息。
    接下来,代码使用UrlBasedCorsConfigurationSourcePathPatternParser来指定CORS配置应适用于所有的URL路径。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值