当前位置: 首页 > article >正文

Spring Boot 跨域解决方案

Spring Boot 跨域解决方案

引言

在 Web 应用中,跨域请求已经成为一个常见的问题。浏览器出于安全考虑,限制了不同源之间的请求,这种限制被称为同源策略。当我们的前端应用和后端 API 部署在不同的域名或端口下时,就会出现跨域问题。为了保证应用的正常运行,解决跨域问题显得尤为重要。本文将介绍两种常见的 Spring Boot 跨域解决方案:WebMvcConfigurerFilterRegistrationBean

常见的跨域产生条件:

  • 不同的协议:例如,前端使用 HTTPS,后端使用 HTTP。
  • 不同的域名:例如,前端在 example.com,后端在 api.example.com
  • 不同的端口:例如,前端在 localhost:3000,后端在 localhost:8080

1. 使用 WebMvcConfigurer 解决跨域

什么是 WebMvcConfigurer?

WebMvcConfigurer 是 Spring MVC 提供的一个接口,允许我们通过实现该接口来定制 Spring MVC 的配置。它提供了一系列钩子方法,便于我们进行全局配置。

实现跨域配置的步骤

下面是通过实现 WebMvcConfigurer 接口来配置跨域的示例代码:

@Configuration
public class SpringMvcConfiguration implements WebMvcConfigurer{

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
            .allowCredentials(true)
            .allowedOrigins("*")
            .allowedHeaders("*")
            .allowedMethods("*")
            .maxAge(1800L);
    }
    
}

注意事项

  • allowedOrigins:可以指定允许的来源,可以是特定的域名。
  • allowedMethods:指定允许的 HTTP 方法,需根据实际需求配置。
  • allowedHeaders:指定允许的请求头,使用 "*" 表示允许所有请求头,具体可以根据需求进行限制。
  • allowCredentials:是否允许携带凭据(如 Cookies)。

2. 使用 FilterRegistrationBean 解决跨域

什么是 FilterRegistrationBean?

FilterRegistrationBean 是 Spring Boot 提供的用于注册过滤器的工具。通过注册自定义的过滤器,我们可以灵活地处理请求和响应,包括设置跨域相关的响应头。

实现跨域配置的步骤

以下是通过 FilterRegistrationBean 实现跨域配置的示例代码:

@Configuration
public class CorsConfig {

    @Bean
    public FilterRegistrationBean<CorsFilter> corsFilterBean() {
        CorsConfiguration corsConfiguration = new CorsConfiguration();
        corsConfiguration.setAllowCredentials(true);
        corsConfiguration.addAllowedOrigin("*");
        corsConfiguration.addAllowedHeader("*");
        corsConfiguration.addAllowedMethod("*");
        corsConfiguration.setMaxAge(1800L);
        
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**", corsConfiguration);
        
        FilterRegistrationBean<CorsFilter> bean = new FilterRegistrationBean<>(new CorsFilter(source));
        bean.setOrder(Integer.MIN_VALUE);
        return bean;
    }
    
}

结论

本文介绍了两种在 Spring Boot 中处理跨域请求的方法:使用 WebMvcConfigurerFilterRegistrationBeanWebMvcConfigurer 方法相对简单,适合大多数场景;而 FilterRegistrationBean 方法提供了更大的灵活性,适合需要定制化处理的场景。


http://www.kler.cn/a/375567.html

相关文章:

  • Pytorch | 从零构建ParNet/Non-Deep Networks对CIFAR10进行分类
  • 深入了解蓝牙Profile类型与设备的对应关系
  • Go怎么做性能优化工具篇之基准测试
  • OSPF的状态机
  • 领域自适应
  • 前端开放性技术面试—面试题
  • 星光校园之恋
  • leetcode day8 动态规划篇 3259+746+198
  • 高级java每日一道面试题-2024年10月25日-JVM篇-你是如何排查线上OOM问题的?
  • (python)如何进行加密
  • 输出特殊图案,请在c环境中运行
  • wpf设置全局字体大小,可以配置
  • 点评项目-13-附近商铺、用户签到、UV统计
  • React04 State变量 组件渲染
  • Kali Linux
  • Windows 10 安装使用Docker踩过的坑和解决-31/10/2024
  • InnoDB: corruption in the InnoDB tablespace
  • 动态规划之两个数组的 dp(下)
  • No.23 笔记 | WEB安全 - 任意文件漏洞 part 5
  • 关于供电不足导致的问题
  • OpenGL入门002——顶点着色器和片段着色器
  • 开源模型应用落地-qwen模型小试-Qwen2.5-7B-Instruct-玩转ollama-Modelfile使用技巧(四)
  • 【ROS的TF系统】
  • 基于Transformer的路径规划 - 第五篇 GPT生成策略_解码方法优化
  • [系统优化] 系统调度策略调整笔记
  • 重新修改我的标志