解决后端跨域问题

devtools/2025/2/26 14:37:19/

目录

一、什么是跨域问题

1、跨域问题的定义

2、举例

3、为什么会有跨域问题的存在?

二、解决跨域问题

1、新建配置类

2、编写代码

三、结语


一、什么是跨域问题

1、跨域问题的定义

        跨域问题(Cross-Origin Resource Sharing, CORS)是 Web 开发中常见的安全机制问题,主要发生在浏览器中。当浏览器从一个域名的网页向另一个域名的服务器发起请求时,如果这两个域名不同(协议、域名或端口不同),浏览器会阻止这种请求,这就是跨域问题

2、举例

跨域是指浏览器从一个 源(Origin) 向另一个  发起请求时,如果这两个源不同,就称为跨域。源由以下三部分组成:

  1. 协议(如 http 或 https
  2. 域名(如 example.com
  3. 端口(如 8080

如果协议、域名或端口中任意一个不同,就属于跨域。例如:

  • http://example.com 和 https://example.com(协议不同)
  • http://example.com 和 http://api.example.com(域名不同)
  • http://example.com 和 http://example.com:8080(端口不同)

3、为什么会有跨域问题的存在?

跨域问题是浏览器的安全机制,称为 同源策略(Same-Origin Policy)。它的目的是防止恶意网站通过脚本访问其他网站的资源,保护用户数据安全。 

二、解决跨域问题

1、新建配置类

2、编写代码

@Configuration//表示这是一个配置类,Spring 容器会在启动时加载该类,并将其中的配置应用到整个应用程序中。
public class WebConfig implements WebMvcConfigurer {@Overridepublic void addCorsMappings(CorsRegistry registry) {registry.addMapping("/**")///** 表示所有路径都适用该 CORS 规则。你可以根据需要修改为特定的路径,例如 /api/**。.allowedOrigins("*")//表示允许所有来源(域)访问后端资源。* 是一个通配符,表示允许任何域访问。如果你只想允许特定域访问,可以将 * 替换为具体的域名,例如 "http://example.com"。.allowedMethods("GET","POST","PUT","DELETE")//指定允许的 HTTP 方法。这里配置了 GET、POST、PUT 和 DELETE 方法。如果需要支持其他方法(如 PATCH、OPTIONS),可以添加到列表中。.allowedHeaders("*");//allowedHeaders("*") 表示允许所有请求头。如果你只想允许特定请求头,可以将 * 替换为具体的头信息,例如 "Content-Type", "Authorization"。}
}

三、结语

以上就是跨域问题的介绍,以及其中一种解决方案。

如果对本篇文章感兴趣,请关注本博主~~

 


http://www.ppmy.cn/devtools/162813.html

相关文章

大厂都在用的前端换肤方案:多品牌适配 + 夜间模式全解析

目录 引言 1. 换肤基础 1.1 换肤概念 1.2 主题类型 1.3 应用场景 2. 核心方案 2.1 CSS 变量切换 2.1.1 基本用法 2.1.2 优势与挑战 2.1.3 解决方案 2.2 动态样式表 2.2.1 实现步骤 2.2.2 优势与劣势 2.2.3 优化建议 2.3 类名空间 2.3.1 实现步骤 2.3.2 示例代码…

短剧源码部署搭建小程序搭建IAA+IAP混合解锁模式

在当今数字化内容消费迅速增长的时代,短剧作为一种新兴的内容形式,凭借其短小精悍、节奏紧凑的特点,迅速吸引了大量用户。作为一名软件体验测试人员,我有幸体验了一款集创新与实用为一体的短剧小程序。这款小程序不仅在前端用户体…

【Linux系统】—— 冯诺依曼体系结构与操作系统初理解

【Linux系统】—— 冯诺依曼体系结构与操作系统初理解 1 冯诺依曼体系结构1.1 基本概念理解1.2 CPU只和内存打交道1.3 为什么冯诺依曼是这种结构1.4 理解数据流动 2 操作系统2.1 什么是操作系统2.2 设计OS的目的2.3 操作系统小知识点2.4 如何理解"管理"2.5 系统调用和…

前端面试题---vue和react的区别

文章目录 框架 vs 库:学习曲线:模板 vs JSX:数据绑定:状态管理:性能:社区支持: 框架 vs 库: Vue 是一个完整的框架,提供了从模板到状态管理的全套解决方案;R…

K8s部署主从结构MySQL服务

01 介绍 RC、Deployment、DaemonSet都是面向无状态的服务,它们所管理的Pod的IP、名字、启停顺序等都是随机分配的,而StatefulSet,管理所有有状态的服务。 StatefulSet为了解决有状态服务的问题,它所管理的Pod拥有固定的Pod名称,一定的启停顺序,在StatefulSet中,Pod名字…

哈希表入门到精通:从原理到 Python 实现全解析

系列文章目录 01-从零开始掌握Python数据结构:提升代码效率的必备技能! 02-算法复杂度全解析:时间与空间复杂度优化秘籍 03-线性数据结构解密:数组的定义、操作与实际应用 04-深入浅出链表:Python实现与应用全面解析 …

JVM view(1)

文章目录 JVM面试题 基础 1.什么是JVM? 2.JVM的组织架构? 内存管理 3.JVM的内存区域是什么? 3.1堆 3.2方法区 3.3程序计数器 3.4Java虚拟机栈 3.5本地方法栈 4.堆和栈的区别是什么? 5.JDK1.6、1.7、1.8内存区域的变化?…

ubuntu网络及软件包管理

1、Ubuntu中如何设置IP地址 在 Ubuntu 中,可以通过几种方式设置 IP 地址:使用网络管理器图形界面、命令行工具(如 nmcli 或 nmtui)、或直接编辑网络配置文件。以下是这几种方法的详细步骤。 1.1、方法一:使用图形界面…