• Spring Boot如何配置CORS支持


    Spring Boot如何配置CORS支持

    CORS(跨源资源共享)是一种Web浏览器的安全性功能,用于控制网页上的脚本文件从不同的源加载其他网页资源。在开发现代Web应用程序时,通常需要跨域请求不同的资源,如API服务或其他Web应用程序。本文将介绍如何在Spring Boot应用程序中配置CORS(跨源资源共享)支持,以允许跨域请求。

    在这里插入图片描述

    什么是CORS?

    CORS(跨源资源共享)是一种安全性特性,用于控制浏览器是否允许Web页面中的JavaScript代码从不同的源加载其他网页资源。在默认情况下,浏览器不允许跨源请求,以防止跨站点请求伪造(CSRF)攻击。但在某些情况下,例如从前端应用程序向后端API发送HTTP请求时,需要解除跨源限制,这就需要CORS支持。

    Spring Boot中的CORS支持

    Spring Boot提供了简单而强大的方式来配置CORS支持,允许您定义哪些跨域请求是允许的,哪些是被禁止的。在Spring Boot中,您可以通过注解或配置文件来配置CORS策略。

    使用注解配置CORS

    在Spring Boot中,您可以使用@CrossOrigin注解来配置CORS策略。该注解可以应用在控制器方法上,也可以应用在整个控制器类上。以下是一个使用注解配置CORS的示例:

    @RestController
    @RequestMapping("/api")
    public class MyController {
    
        @GetMapping("/data")
        @CrossOrigin(origins = "http://localhost:8080")
        public ResponseEntity<String> getData() {
            // 处理请求并返回响应
            return ResponseEntity.ok("Hello from the server!");
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    在上述代码中,@CrossOrigin注解用于getData方法,指定了允许跨域请求的源。在这个例子中,只允许来自http://localhost:8080的请求访问该接口。

    使用配置文件配置CORS

    除了使用注解,您还可以通过在application.propertiesapplication.yml中定义属性来配置CORS策略。以下是一个使用配置文件配置CORS的示例:

    application.properties中:

    # 允许所有源访问该接口
    spring.mvc.cors.allow-credentials=false
    spring.mvc.cors.allowed-headers=*
    spring.mvc.cors.allowed-methods=GET,POST,PUT,DELETE
    spring.mvc.cors.allowed-origins=*
    spring.mvc.cors.exposed-headers=Authorization,Link,X-Total-Count
    spring.mvc.cors.max-age=3600
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    application.yml中:

    spring:
      mvc:
        cors:
          allow-credentials: false
          allowed-headers: "*"
          allowed-methods: "GET,POST,PUT,DELETE"
          allowed-origins: "*"
          exposed-headers: "Authorization,Link,X-Total-Count"
          max-age: 3600
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    在上述配置中,我们允许了所有源的跨域请求,定义了允许的HTTP方法、允许的请求头、允许的暴露头部和最大缓存时间。

    高级CORS配置

    除了基本的CORS配置,Spring Boot还提供了更高级的配置选项,以便更精细地控制CORS策略。您可以使用CorsConfigurationSource接口来自定义CORS配置。

    以下是一个示例,演示如何创建一个自定义CorsConfigurationSource来根据请求路径动态配置CORS策略:

    @Configuration
    public class CustomCorsConfiguration {
    
        @Bean
        public CorsConfigurationSource corsConfigurationSource() {
            UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
            
            CorsConfiguration config = new CorsConfiguration();
            config.setAllowedOrigins(Arrays.asList("http://localhost:8080"));
            config.setAllowedMethods(Arrays.asList("GET", "POST", "PUT", "DELETE"));
            config.setAllowedHeaders(Arrays.asList("*"));
            config.setExposedHeaders(Arrays.asList("Authorization", "Link", "X-Total-Count"));
            config.setMaxAge(3600L);
            
            // 根据路径动态配置CORS策略
            source.registerCorsConfiguration("/api/**", config);
            
            return source;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    在上述示例中,我们创建了一个自定义CorsConfigurationSource Bean,并根据请求路径(此处是/api/**)动态配置CORS策略。

    运行Spring Boot应用程序

    现在,您已经配置了CORS支持,可以运行您的Spring Boot应用程序并测试CORS功能。使用以下命令启动Spring Boot应用程序:

    ./mvnw spring-boot:run
    
    • 1

    或者使用Maven Wrapper:

    mvn spring-boot:run
    
    • 1

    您的Spring Boot应用程序将在默认端口(通常是8080)上启动。

    测试CORS策略

    您可以使用浏览器的开发者工具或工具(例如Postman)来测试CORS策略。尝试从不同的源(例如http://localhost:8080http://localhost:3000)发出HTTP请求,以确保CORS策略按预期工作。

    总结

    在现代Web开发中,CORS(跨源资源共享)是一个重要的安全特性,用于控制跨域请求。Spring Boot提供了多种配置CORS策略的方式,可以根据您的需求来选择。在开发Web应用程序时,确保正确配置CORS策略,以便允许跨域请求,并保持您的应用程序的安全性和可用性。希望本文对您有所帮助,让您更好地理解如何在Spring Boot中配置CORS支持。 Happy coding!

  • 相关阅读:
    干货 | 数字经济创新创业——如何造就成功的职业生涯
    idea所有历史版本下载
    OPUS 中DTX的作用
    QT支持的平台
    资源道具化
    Java资深架构师详解java进阶技术体系与主流架构思维(建议入手)
    Go的网络编程详解
    java毕业设计网上零食进销存源码+lw文档+mybatis+系统+mysql数据库+调试
    asp毕业设计——基于asp+access的文学网站设计与实现(毕业论文+程序源码)——文学网站
    javaWeb超市订单管理系统
  • 原文地址:https://blog.csdn.net/u013749113/article/details/133669618