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

解决CORS (跨源资源共享) 错误

问题引入

前端代码


<template><div id="hello-vue" class="demo">{{ message }}</div><el-button type="primary" @click="handleClick">我是一个按钮</el-button></template><script setup>//加了{}说明是解构导入,即导入整个对象
//本来应该是 import Vue from "vue";
import { ref } from "vue";
import axios from 'axios';// ****************定义响应式数据****************//
const message = ref("Hello Vue!!");
// ****************定义响应式数据****************//// ****************定义方法****************//
const  handleClick = async() => {message.value = "你点击了按钮!";const response =await axios.get('http://localhost:8080/pra');console.log(response.data);
};
// ****************定义方法****************//
</script><style lang="scss" scoped>
</style>

1.使用 @CrossOrigin 注解(后端)

如果你只需要对某个特定的控制器或方法启用 CORS,你可以在控制器或者方法上使用 @CrossOrigin 注解。

 @CrossOrigin(origins = "http://localhost:5173")  // 允许来自 http://localhost:5173 的请求
@RestController
public class PraController {@CrossOrigin(origins = "http://localhost:5173")  // 允许来自 http://localhost:5173 的请求@GetMapping("/pra")public Result getPra() {return Result.success("成功pra");}
}

"http://localhost:5173"改成你自己的前端端口

 

2.使用代理解决 CORS 问题(前端)

  server: {proxy: {'/pra': {target: 'http://localhost:8080',  // 后端服务器地址changeOrigin: true,  // 是否允许代理改变源rewrite: (path) => path.replace(/^\/pra/, '/pra'),  // 重写路径},},},

1. server.proxy

这是 Vite 配置中的一部分,用于设置开发服务器的代理规则。代理是通过 proxy 配置项来定义的,目的是将前端的某些请求转发到后端服务器(通常运行在不同的端口上)。

2. '/pra'

这是配置的代理规则的路径匹配。表示当前端发起一个以 /pra 开头的请求时,Vite 会将这个请求转发给配置中的 target 地址。比如,如果你访问 http://localhost:5173/pra(Vite 开发环境),它会被代理到 http://localhost:8080/pra(后端服务器)。

3. target: 'http://localhost:8080'

target 是代理的目标地址,也就是后端 API 服务器的 URL。在这里,所有匹配 /pra 路径的请求都会被转发到 http://localhost:8080,也就是你的后端服务器。

4. changeOrigin: true

changeOrigin 设置为 true 时,代理会修改请求的 Origin 头部,使其看起来是从目标地址(http://localhost:8080)发出的请求。通常,这对于解决跨域问题很有用,因为浏览器会检查请求的 Origin 头来判断是否允许请求跨域。

例如,当前端请求 http://localhost:5173/pra 时,浏览器会发送一个带有 Origin: http://localhost:5173 的请求头,而后端服务器只会接受来自 http://localhost:8080 的请求。changeOrigin: true 会让请求的 Origin 头变为目标地址的域名,即 http://localhost:8080,避免出现跨域问题。

5. rewrite: (path) => path.replace(/^\/pra/, '/pra')

  • rewrite 是一个函数,它用于修改请求的路径。path 是匹配到的请求路径。

    举个例子,假设你配置的是:

    rewrite: (path) => path.replace(/^\/api/, '/v1/api')

    这样的话,/api/hello 会被重写为 /v1/api/hello,再转发给后端。path.replace(/^\/pra/, '/pra') 这段代码的意思是,当路径以 /pra 开头时,替换成 /pra,本质上它并不会改变路径,因为匹配的路径已经是 /pra,所以这段配置看起来是一个 "no-op"(即无操作)。这个配置在当前例子中没有实际效果,但通常可以用于对路径进行其他修改(比如删除前缀或添加其他部分)。

这个配置的作用是,当前端请求以 /pra 开头的路径时,Vite 会将请求转发到后端服务器 http://localhost:8080,并且会改变请求的 Origin 头部以避免跨域问题。rewrite 部分在当前配置中没有实际效果,但它通常用于修改请求路径,例如去掉前缀或添加其他路径部gaicgai'c

相关文章:

解决CORS (跨源资源共享) 错误

问题引入 前端代码 <template><div id"hello-vue" class"demo">{{ message }}</div><el-button type"primary" click"handleClick">我是一个按钮</el-button></template><script setup>//加…...

Redis 实现分布式缓存

一、引言 在当今互联网时代&#xff0c;随着业务的不断发展和用户量的持续增长&#xff0c;系统的性能和可扩展性成为了关键挑战。分布式缓存作为一种重要的技术手段&#xff0c;能够有效地缓解数据库压力、提高系统响应速度、增强系统的可扩展性。Redis 作为一种高性能的内存数…...

Chrome与火狐哪个浏览器的移动版本更流畅

在当今的数字化时代&#xff0c;移动设备已经成为我们生活中不可或缺的一部分。而浏览器作为我们访问互联网的重要工具&#xff0c;其性能和用户体验直接影响到我们的使用感受。本文将对比Chrome和火狐&#xff08;Firefox&#xff09;两款主流浏览器的移动版本&#xff0c;探讨…...

7篇Python爬虫实例,直接代码可运行,全网最全,注释超详细(适合收藏)——2、爬取图片信息。

7篇Python爬虫实例&#xff0c;可直接运行&#xff0c;适合收藏 python爬虫7篇实例&#xff0c;分七个文章进行发布&#xff1b;第二篇&#xff1a;爬取图片信息。 爬取图片信息&#xff0c;并将每张图片都下载下来。 爬虫主要三部分&#xff1a; 1、获取数据 2、数据解析 3、…...

25.停车场管理系统(基于web的Java项目)

目录 1.系统的受众说明 2.相关技术与方法 3.系统分析 3.1 可行性分析 3.1.1 技术可行性 3.1.2 经济可行性 3.1.3 操作可行性 3.2 需求分析 3.2.1 系统功能描述 3.2.2 用例图分析 4. 系统设计 4.1 系统类分析 5. 系统详细设计与实现 5.1 用户登录 5.2 系统信…...

展览搭建公司怎么跟展会主办打好交道

与展会主办打好交道的重要性 首先&#xff0c;我们得明白&#xff0c;展览搭建公司为何要跟展会主办打交道。简单地说&#xff0c;展会主办拥有大量的参展商信息。这些参展商是展览搭建公司潜在的客户群体&#xff0c;与主办打好交道&#xff0c;就等于拿到了通向这些客户的 “…...

软件开发方法

软件开发方法是一种用于指导软件开发过程的系统性方法,它涵盖了从需求分析、设计、编码、测试到维护的整个软件生命周期。软件开发方法通常包括一系列的步骤、技术和工具,以确保软件的质量、可维护性和可扩展性。 常见的软件开发方法有瀑布模型、敏捷开发、螺旋模型等。这些…...

「Mac畅玩鸿蒙与硬件24」UI互动应用篇1 - 灯光控制小项目

本篇将带领你实现一个互动性十足的灯光控制小项目&#xff0c;用户可以通过点击按钮来控制灯光的开关。该项目将涉及状态管理、动态图片加载以及按钮交互&#xff0c;是学习鸿蒙应用开发的重要基础。 关键词 UI互动应用状态管理动态图片加载用户交互 一、功能说明 在这个灯光…...

十二:java web(4)-- Spring核心基础

目录 创建项目 Spring 核心基础 Spring 容器 Spring 容器的作用 Spring 容器的工作流程 Bean Bean 的生命周期 IOC&#xff08;控制反转&#xff09;与依赖注入&#xff08;DI&#xff09; 控制反转的概念 依赖注入的几种方式&#xff08;构造器注入、Setter 注入、接…...

new和malloc有什么区别,他们的用法是什么?malloc分配失败会导致什么问题

1) new和malloc的区别&#xff0c;和他们的用法 new 和 malloc 主要有以下区别&#xff1a; 一、性质和来源 new &#xff1a;是 C 的运算符&#xff0c;在操作时会调用构造函数进行对象的初始化。它是 C 语言层面的操作&#xff0c;能更好地与 C 的面向对象特性结合。 malloc …...

了解SQLExpress数据库

SQLExpress&#xff08;Microsoft SQL Server Express&#xff09;是由微软公司开发的一款免费且轻量级的数据库管理系统。以下是关于SQLExpress的详细解释&#xff1a; 一、定义与特点 定义&#xff1a; SQLExpress是Microsoft SQL Server的一个缩减版或基础版&#xff0c;旨在…...

geoserver创建一个根据属性显示不同形状的点样式

geoserver创建一个根据属性显示不同形状的点样式 三角形 -triangle 圆形 - circle 正方形 - square 星形 - star 十字形 - cross 菱形 -diamond 代码&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <StyledLayerDescriptor version"…...

中国遗传学会2024全国学术研讨会在长沙成功召开

2024年11月3日至6日&#xff0c;备受瞩目的中国遗传学会2024全国学术研讨会在长沙盛大召开&#xff0c;此次盛会由中国遗传学会携手湖南省遗传学会共同主办&#xff0c;中南大学与南华大学共同承办。大会以“遗传学&#xff1a;前沿与交叉”为主题&#xff0c;吸引了来自全国各…...

Android Studio 多工程公用module引用

在Android Studio中&#xff0c;如果有多个工程需要共享同一个module&#xff0c;你可以通过以下步骤来实现module的公用&#xff1a; 1.将你想共享的module移动到一个单独的目录&#xff0c;比如一个新建的"libraries"文件夹。 2.修改module的build.gradle文件&am…...

(实战)WebApi第9讲:EFCore性能优化(IQueryable延迟查询、取消跟踪机制)

一、例子是第8讲的四、6&#xff08;EFCore的静态化处理 &#xff09;&#xff1a;分析ToList() ToList()在下图绿色框内。 二、在没有最终取数据的时候&#xff0c;使用 IQueryable<T> 延迟执行查询 &#xff08;1&#xff09;在没有最终取数据的时候&#xff0c;不要使…...

Java实现pdf转图片

第一步 <dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox</artifactId><version>2.0.32</version> <!-- 请检查最新版本 --> </dependency> 第二步 package com.example.demo.file.pdf;import or…...

健身房管理新纪元:SpringBoot技术应用

4系统概要设计 4.1概述 本系统采用B/S结构(Browser/Server,浏览器/服务器结构)和基于Web服务两种模式&#xff0c;是一个适用于Internet环境下的模型结构。只要用户能连上Internet,便可以在任何时间、任何地点使用。系统工作原理图如图4-1所示&#xff1a; 图4-1系统工作原理…...

Java之字符串分割转换List

Java之字符串分割转换List 字符串分割成数组然后转换成List有多种方式&#xff0c;以下是每种方式的示例&#xff0c;推荐Java8的新特性Stream。 使用Java8的新特性Stream API String str "aaa,bbb,ccc"; // 使用Arrays.stream() List<String> list1 …...

RabbitMQ如何保证发送的消息可靠(RabbitMQ的Confirm模式和2.Return模式)

RabbitMQ如何保证发送的消息可靠&#xff08;RabbitMQ的Confirm模式和2.Return模式&#xff09; 1、RabbitMQ消息Confirm模式&#xff08;保证从生产者到交换机的消息可靠&#xff09;1.1、Confirm模式简介1.2、具体代码实现1.2.1、application.yml 开启确认模式1.2.2、生产者方…...

适配器模式:类适配器与对象适配器

适配器模式是一种结构性设计模式&#xff0c;旨在将一个接口转换成客户端所期望的另一种接口。它通常用于解决由于接口不兼容而导致的类之间的通信问题。适配器模式主要有两种实现方式&#xff1a;类适配器和对象适配器。下面&#xff0c;我们将详细探讨这两种方式的优缺点及适…...

2026 AI搜索迭代下的获客革新:SEOGEO双引擎战略落地实战方案

2026 AI搜索迭代下的获客革新&#xff1a;SEO&GEO双引擎战略落地实战方案摘要&#xff1a;2026年生成式AI全面渗透搜索场景&#xff0c;传统关键词SEO流量遭遇结构性下滑&#xff0c;零点击搜索成为行业常态。本文以泉州本地中小企业数字化服务场景为依托&#xff0c;深度剖…...

如何识别并拒绝AI领域虚假技术信息

我不能按照该标题生成相关内容。原因如下&#xff1a;标题中“TAI #181”指向一份外部出版物&#xff08;疑似The AI Index Report或某AI行业通讯&#xff09;&#xff0c;但未提供任何可验证的原始内容、上下文、数据来源或事实依据&#xff1b;“DeepSeek’s V3.2 ‘Speciale…...

python的pyd本质:就是Windows平台下的DLL动态链接库

一、 拆解&#xff1a;Python 库的真实生态与 .pyd / .so 的底层逻辑1. Python 真的有百万个第三方 PIP 库吗&#xff1f;不准确。 截至2026年&#xff0c;PyPI&#xff08;Python Package Index&#xff09;官方注册的开源项目总量大约在 50万到60万个 之间。虽然达不到“百万…...

ARM处理器命名后缀解析与技术演进

1. ARM处理器命名后缀解析&#xff1a;从TDMI-S到T2F-S的技术演进作为一名长期从事嵌入式开发的工程师&#xff0c;我经常需要查阅ARM处理器的技术文档。初次接触ARM7TDMI-S、ARM926EJ-S这类命名时&#xff0c;那些神秘的字母后缀确实让人困惑。今天我们就来彻底拆解这些命名背…...

UE5中用TypeScript替代蓝图:Puerts热重载实战指南

1. 为什么非得在UE5里塞进TypeScript——一个被蓝图卡住脖子的开发者的自白 我第一次在UE5项目里写完第10个“Get All Actors of Class”节点&#xff0c;拖出第7条执行引线&#xff0c;再连上第4个“Branch”判断分支&#xff0c;最后把结果塞进一个“Set Array Element”时&a…...

QQ空间说说备份终极指南:GetQzonehistory完整教程

QQ空间说说备份终极指南&#xff1a;GetQzonehistory完整教程 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否曾经想要永久保存QQ空间里那些珍贵的青春回忆&#xff1f;那些承载着…...

AI 时代,C# 程序员学 Python 到底值不值?| C#转Python

关键词&#xff1a;C#转Python、Python入门、AI时代、C#程序员、Python学习刷技术社区的时候&#xff0c;你一定见过这种标题&#xff1a;"Python 已成 AI 时代唯一语言""C# 已死&#xff0c;.NET 没未来""不会 Python 的程序员正在被淘汰"说实话…...

本地视频怎么去水印?2026本地视频去水印软件推荐与方法合集

不少朋友都会碰到一个烦恼&#xff1a;从抖音、快手、小红书下载的视频都带着水印&#xff0c;自己录制的视频也会被社交平台自动添加水印。想要去掉这些水印用于素材库或后期编辑&#xff0c;却不知道该怎么办。别急&#xff0c;今天就给你盘点2026年最实用的本地视频去水印方…...

C#从零开始学习笔记---第九天

又是新的一天&#xff0c;欢迎大家继续查看我的学习笔记&#xff0c;这两天确实状态一般&#xff0c;今天内容我们也不记录太多&#xff0c;主要分为两大块&#xff0c;第一块是对之前提到过的数组进行一个复习&#xff0c;第二块就是在记录一下集合和哈希表的一些内容。话不多…...

3步解锁网易云音乐NCM文件:免费转换工具终极指南

3步解锁网易云音乐NCM文件&#xff1a;免费转换工具终极指南 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换&#xff0c;Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 还在为网易云音乐下载的NCM格式音乐无法在其他设备…...