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

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!");}
}

在上述代码中,@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

application.yml中:

spring:mvc:cors:allow-credentials: falseallowed-headers: "*"allowed-methods: "GET,POST,PUT,DELETE"allowed-origins: "*"exposed-headers: "Authorization,Link,X-Total-Count"max-age: 3600

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

高级CORS配置

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

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

@Configuration
public class CustomCorsConfiguration {@Beanpublic 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;}
}

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

运行Spring Boot应用程序

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

./mvnw spring-boot:run

或者使用Maven Wrapper:

mvn spring-boot:run

您的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!

http://www.lryc.cn/news/184931.html

相关文章:

  • Mybatis 拦截器(Mybatis插件原理)
  • AXI总线协议基础--几分钟熟悉通道信号和基础架构
  • matlab数学建模方法与实践 笔记汇总
  • [UE虚幻引擎] DTCopyFile 插件说明 – 使用蓝图拷贝复制文件 (Windows)
  • 如何用ChatGPT学或教英文?5个使用ChatGPT的应用场景!
  • 基于spirngboot人事考勤管理信息系统
  • QT界面窗口 (widget)的显示和隐藏,关闭
  • 这7个AI软件让设计效率飞起,快来收藏 优漫动游
  • ElasticSearch环境准备
  • JAVA练习百题之数组插入元素
  • C++11常见语法
  • 【数据分析】时间序列
  • 【图像算法相关知识点】
  • 竹云筑基,量子加密| 竹云携手国盾量子构建量子身份安全防护体系
  • 数据结构P46(2-1~2-4)
  • 基于BERT模型进行文本处理(Python)
  • 妙鸭相机功能代码复现
  • 使用Java Spring Boot构建高效的爬虫应用
  • 归并排序与非比较排序详解
  • 第85步 时间序列建模实战:CNN回归建模
  • 【MATLAB源码-第36期】matlab基于BD,SVD,ZF,MMSE,MF,SLNR预编码的MIMO系统误码率分析。
  • Uniapp 新手专用 抖音登录 获取用户头像、名称、openid、unionid、anonymous_openid、session_key
  • openssl引擎开发踩坑小记
  • ubuntu 设置x11vnc服务
  • 物理备份xtrabackup
  • 1.springcloudalibaba nacos2.2.3部署
  • Linux 查看是否安装memcached
  • 设计模式14、命令模式 Command
  • 【Go】excelize库实现excel导入导出封装(一),自定义导出样式、隔行背景色、自适应行高、动态导出指定列、动态更改表头
  • 【开发篇】二十、SpringBoot整合RocketMQ