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

【Spring Boot 3】【Web】处理跨域资源共享 CORS

【Spring Boot 3】【Web】处理跨域资源共享 CORS

  • 背景
  • 介绍
  • 开发环境
  • 开发步骤及源码
  • 工程目录结构
  • 总结

背景

软件开发是一门实践性科学,对大多数人来说,学习一种新技术不是一开始就去深究其原理,而是先从做出一个可工作的DEMO入手。但在我个人学习和工作经历中,每次学习新技术总是要花费或多或少的时间、检索不止一篇资料才能得出一个可工作的DEMO,这占用了我大量的时间精力。因此本文旨在通过一篇文章即能还原出可工作的、甚至可用于生产的DEMO,期望初学者能尽快地迈过0到1的这一步骤,并在此基础上不断深化对相关知识的理解。
为达以上目的,本文会将开发环境、工程目录结构、开发步骤及源码尽量全面地展现出来,文字描述能简则简,能用代码注释的绝不在正文中再啰嗦一遍,正文仅对必要且关键的信息做重点描述。

介绍

本文介绍开发 Spring Boot Web 应用时如何处理跨域资源共享(CORS)。

跨域资源共享(CORS,Cross-Origin Resource Sharing),是一种基于 HTTP 头的机制,允许服务器标识除了自己以外的其他源(域、协议或端口),使得浏览器允许这些源访问加载自己的资源。

Spring 提供五种方法解决跨域问题:

  • 使用 @CrossOrigin 注解 Controller 类或方法
  • 配置 CorsFilter
  • 创建实现 WebMvcConfigurer 接口的配置类,重写其 addCorsMappings 方法
  • 自定义 Filter
  • 设置 HttpServletResponse

开发环境

分类名称版本
操作系统WindowsWindows 11
JDKOracle JDK21.0.1
IDEIntelliJ IDEA2023.3.7
构建工具Apache Maven3.9.9

开发步骤及源码

1> 创建Maven工程,添加依赖。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>com.jiyongliang</groupId><artifactId>springboot3-web</artifactId><version>0.0.1</version></parent><artifactId>springboot3-web-cors</artifactId><properties><java.version>21</java.version><maven.compiler.source>21</maven.compiler.source><maven.compiler.target>21</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><spring-boot.version>3.3.3</spring-boot.version><lombok.version>1.18.34</lombok.version></properties><dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring-boo
http://www.lryc.cn/news/433128.html

相关文章:

  • HUAWEI华为MateBook B5-420 i5 集显(KLCZ-WXX9,KLCZ-WDH9)原装出厂Windows10系统文件下载
  • 算法练习题10:leetcode76最小覆盖子串-滑动窗口
  • Svn常用操作技巧详细说明
  • 六、MySQL高级—架构介绍(1)
  • TensorRT-For-YOLO-Series项目:实现yolov10模型的python-tensorrt推理(对比int8与fp16推理差异)
  • 码上君量化互助社群介绍
  • Qt使用小技巧之按钮动态变化
  • MySQL——事务与存储过程(三)存储过程的使用(1)调用存储过程
  • 基于VUE2-dataV和echarts实现的可视化大屏,百分比适配PC端
  • FastAPI模块化:为复杂应用程序提供清晰的结构
  • 【Hot100】LeetCode—215. 数组中的第K个最大元素
  • pycharm如何安装selenium
  • css三点闪烁(可用于加载样式、标题等)
  • 支持向量机 (Support Vector Machines, SVM)
  • 上海市计算机学会竞赛平台2024年8月月赛丙组调和级数
  • 【重学 MySQL】二十、运算符的优先级
  • 十种优化MySQL数据库的最佳建议
  • springboot组件使用-mybatis组件使用
  • Ribbon 源码分析【Ribbon 负载均衡】
  • Python | Leetcode Python题解之第385题迷你语法分析器
  • 进程间通信-进程池
  • 【PYTHON 基础系列-request 模块介绍】
  • springboot 实现策略模式通过id进入不同的服务类service
  • AUC真的什么情形下都适合吗
  • Flutter基本组件Text使用
  • DDS基本原理--FPGA学习笔记
  • 有temp表包含A,B两列,使用SQL,对B列进行处理,形成C列,按A列顺序,B列值不变,则C列累计技术,B列值变化,则C列重新开始计数
  • 【H2O2|全栈】关于HTML(6)HTML基础(五 · 完结篇)
  • 2024第三届大学生算法大赛 真题训练一 解题报告 | 珂学家
  • IIS网站允许3D模型类型的文件