解决:前后端跨域请求

目录

关于跨域请求出现的原因

同源策略

示例(跨域问题)

如何解决跨域请求

方法一:配置后端服务器以允许跨域请求(后端)

方法二:使用代理服务器(前端)

一 ,使用ajax发送异步请求时 使用api 替代原本访问后端的端口号

二,在 vite.config.js 文件中 配置跨域


关于跨域请求出现的原因


前端地址:http://localhost:5173(Vue 默认端口)

后端地址:http://localhost:8080(常见后端默认端口)

差异点:端口号不同(5173 vs 8080)

结果:浏览器认为二者不同源,触发同源策略限制,导致跨域请求被拦截。


同源策略

定义协议(http/https)、域名(example.com)、端口(:8080)三者完全相同才视为同源。

限制行为:

  • 阻止跨域 AJAX/Fetch 请求。
  • 限制跨域读取 DOM(如 <iframe> 内容)。
  • 限制 Cookie、LocalStorage 的跨域访问。

示例(跨域问题)

前端使用vue3 框架书写,启动前端默认端口号是5173,后端默认端口号是8080,这就会导致客户端与服务器之间发送请求时因端口号不同产生跨域问题。

根本原因:浏览器发现请求的源(5173)与目标(8080)端口不一致,且后端未明确允许跨域访问。


如何解决跨域请求

未解决前:


方法一:配置后端服务器以允许跨域请求(后端)

思路:之前报错是因为不同源(端口号,域名,协议)之间的访问,在后端服务器配置 CORS(跨域资源共享) 规则,允许来自 http://localhost:5173 的请求跨域访问后端接口(运行在 8080 端口)。


在spring boot项目中添加一个配置类:CorsConfig

package com.it.heima.ssmp.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class CorsConfig implements WebMvcConfigurer {@Overridepublic void addCorsMappings(CorsRegistry registry) {// 允许跨域访问的映射路径,这里表示所有registry.addMapping("/**").allowedOrigins("http://localhost:5173") // 允许前端源// 允许跨域访问的请求方法.allowedMethods("GET", "POST", "PUT", "DELETE")// 允许跨域访问的请求头.allowedHeaders("*")/// 允许跨域访问的响应头.allowCredentials(true);}
}

启动springboot项目,前端vue项目测试结果


方法二:使用代理服务器(前端)

思路

  • 前端运行在 http://localhost:5173(开发服务器端口)。
  • 当代码中发起 /api/xxx 请求时,代理服务器拦截该请求。
  • 代理将请求转发到 http://localhost:8080/api/xxx(后端端口)。
  • 浏览器感知不到转发,认为请求仍来自 5173,从而避免跨域错误。

一 ,使用ajax发送异步请求时 使用api 替代原本访问后端的端口号

这里的api 表示前端默认端口号5173

// axios.get('http://localhost:8080/user/select')
//使用api替换http://localhost:8080 默认使用前端端口号5173
axios.get('/api/user/select').then(res => {console.log('请求成功')console.log(res.data)userList.value = res.data.data}
).catch(error => {console.log(error)
})
二,在 vite.config.js 文件中 配置跨域

// 配置跨域server: {proxy: {'/api': {target: 'http://localhost:8080',changeOrigin: true,rewrite: (path) => path.replace(/^\/api/, '')}}}

启动springboot项目,前端vue项目测试结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/79935.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI内容检测的技术优势与应用场景

随着互联网的普及和数字内容的爆发式增长&#xff0c;文本、图片、音频、视频等多样化内容已成为信息传播的主要载体。然而&#xff0c;伴随内容增长的是违法违规信息的泛滥&#xff0c;如涉黄、涉政、虚假广告、恶意引流等&#xff0c;不仅威胁用户体验&#xff0c;还对平台合…

DockerDesktop替换方案

背景 由于DockerDesktop并非开源软件&#xff0c;如果在公司使用&#xff0c;可能就有一些限制&#xff0c;那是不是除了使用DockerDesktop外&#xff0c;就没其它办法了呢&#xff0c;现在咱们来说说替换方案。 WSL WSL是什么&#xff0c;可自行百度&#xff0c;这里引用WS…

『Linux_网络』 基于状态机的Connect断线重连

客户端会面临服务器崩溃的情况&#xff0c; 我们可以试着写一个客户端重连的代码&#xff0c; 模拟并理 解一些客户端行为&#xff0c; 比如游戏客户端等。 客户端部分&#xff0c;我们本次采用状态机的设计模式实现 下面是关于状态机模式的介绍 状态机模式 状态机模式&…

5月6日日记

一点心得是 看通知要仔细认真&#xff0c;自己想问的问题要先看看通知或者文件中说了没有&#xff0c;如果没说再去问相关负责人。 上课的教室一定要看好&#xff0c;看准了再去。别像今天一样先去了科技楼又去了工学馆。 线代开课了。感觉总体还行&#xff0c;并不是很难。…

【算法专题十】哈希表

文章目录 0.哈希表简介1. 两数之和1.1 题目1.2 思路1.3 代码 2.判断是否为字符重排2.1 题目2.2 思路2.3 代码 3. leetcode.217.存在重复元素3.1 题目3.2 思路3.3 代码 4. leetcode.219.存在重复的元素Ⅱ4.1 题目4.2 思路4.3 代码 5. leetcode.49.字母异位词分组5.1 题目5.2 思路…

【前缀和】矩阵区域和

文章目录 1314. 矩阵区域和解题思路1314. 矩阵区域和 1314. 矩阵区域和 ​ 给你一个 m x n 的矩阵 mat 和一个整数 k ,请你返回一个矩阵 answer ,其中每个 answer[i][j] 是所有满足下述条件的元素 mat[r][c] 的和: i - k <= r <= i + k, j - k <= c <= j + k …

MyBatis的SQL映射文件中,`#`和`$`符号的区别

在MyBatis的SQL映射文件中,#和$符号用于处理SQL语句中的参数替换,但它们的工作方式和使用场景有所不同。 #{} 符号 预编译参数:#{} 被用来作为预编译SQL语句的占位符。这意味着MyBatis会将你传入的参数设置为PreparedStatement的参数,从而防止SQL注入攻击,并允许MyBatis对…

Linux中为某个进程临时指定tmp目录

起因&#xff1a; 在linux下编译k8s&#xff0c;由于编译的中间文件太多而系统的/tmp分区设置太小&#xff0c;导致编译失败&#xff0c;但自己不想或不能更改/tmp分区大小&#xff0c;所以只能通过其他方式解决。 现象&#xff1a; tmp分区大小&#xff1a; 解决方法&#x…

Tomcat中Web应用程序停止时为了防止内存泄漏,JDBC驱动程序被强制取消注册出现原因

1.问题描述 本地Windows环境开发的Springboot项目同样的mysql版本&#xff0c;jdk版本&#xff0c;tomcat版本&#xff0c;本地运行没有任何问题&#xff0c;发布到阿里云服务器上时报以下问题&#xff1a; 06-May-2025 20:06:12.842 警告 [main] org.apache.catalina.loader…

主流国产大模型(以华为盘古大模型和腾讯混元大模型为例)API调用接口的具体参数和使用方法,包括Python和C++的示例代码

以下是主流国产大模型&#xff08;以华为盘古大模型和腾讯混元大模型为例&#xff09;API调用接口的具体参数和使用方法&#xff0c;包括Python和C的示例代码。 华为盘古大模型 API参数&#xff1a; - model&#xff1a;模型名称&#xff0c;如pangu-nlp-large。 - messages&…

高效调用京东 API 实战:商品详情页实时数据采集接口开发指南​

在当今数字化商业环境中&#xff0c;电商数据的实时获取与分析对于企业的决策制定和市场竞争力提升至关重要。京东作为国内领先的电商平台&#xff0c;提供了丰富的 API 接口&#xff0c;允许开发者高效地获取商品详情页的实时数据。本文将详细介绍如何通过实战开发&#xff0c…

MFC自定义控件开发与使用指南

MFC自定义控件开发与使用指南 自定义控件、双缓冲 1. 概述 MFC(Microsoft Foundation Classes)框架提供了丰富的内置控件,但在实际开发中,我们常常需要创建自定义控件来满足特定的界面需求。本文将详细介绍如何在MFC中开发自定义控件,并以CCustomTextControl为例,展示自…

第100+40步 ChatGPT学习:R语言实现多轮建模

回顾一下什么叫多轮建模&#xff1a; 要综合判断一个模型好不好&#xff0c;一次随机抽样是不行的&#xff0c;得多次抽样建模&#xff0c;看看整体的性能如何才行&#xff08;特别是对于这种小训练集&#xff09;。 所以我的思路是&#xff0c;随机抽取训练集和验证集2000次…

编码器型与解码器型语言模型的比较

编码器型与解码器型语言模型的比较 1. 引言 自然语言处理&#xff08;NLP&#xff09;领域近年来取得了革命性进展&#xff0c;这在很大程度上归功于基于Transformer架构的语言模型。在这一技术生态中&#xff0c;编码器型&#xff08;Encoder-only&#xff09;和解码器型&am…

python--------修改桌面文件内容

目录 1. 文件的读写1. 写入文件2. 读取文件3. 追加内容到文件 2.file_path 的常见方法1. 绝对路径2. 相对路径3. 使用 os.path 模块构建路径5. 路径操作5. 用户主目录路径 4. 修改文件内容1.将修改后的内容写回文件2. 逐行处理文件内容3. 使用上下文管理器确保文件安全 1. 文件…

爱普生VG7050EFN压控晶振在小基站的应用优势

在 5G 通信时代&#xff0c;小基站作为提升网络覆盖和容量的重要一环&#xff0c;小基站的稳定运行对于保障用户流畅的通信体验起着关键作用。而在小基站的核心组件中&#xff0c;时钟信号源的质量直接影响着通信质量和设备性能。爱普生VG7050EFN晶振凭借其高性能、小尺寸和低功…

人工智能如何革新数据可视化领域?探索未来趋势

在当今数字化时代&#xff0c;数据如同汹涌浪潮般不断涌现。据国际数据公司&#xff08;IDC&#xff09;预测&#xff0c;全球每年产生的数据量将从 2018 年的 33ZB 增长到 2025 年的 175ZB。面对如此海量的数据&#xff0c;如何有效理解和利用这些数据成为了关键问题。数据可视…

精益数据分析(42/126):移动应用商业模式的深度剖析与实战要点

精益数据分析&#xff08;42/126&#xff09;&#xff1a;移动应用商业模式的深度剖析与实战要点 在创业和数据分析的学习之路上&#xff0c;我们持续探索不同商业模式的奥秘&#xff0c;今天聚焦于移动应用商业模式。我希望和大家一起进步&#xff0c;深入解读《精益数据分析…

未来 CSS:变量、容器查询与新特性的探索

引言&#xff1a;CSS 演进与未来展望 在前端开发的快速发展浪潮中&#xff0c;CSS 已从简单的样式标记语言蜕变为构建现代设计系统的强大基础。根据 HTTP Archive 的 Web Almanac 的调查&#xff0c;超过 86% 的网站已采用至少一项现代 CSS 特性&#xff0c;这一数字仍在持续攀…

概统期末复习--速成

随机事件及其概率 加法公式 推三个的时候ABC&#xff0c;夹逼准则 减法准则 除法公式 相互独立定义 两种分析 两个解法 古典概型求概率&#xff08;排列组合&#xff09; 分步相乘、分类相加 全概率公式和贝叶斯公式 两阶段问题 第一个小概率*A在小概率的概率。。。累计 …