补充:问题:CORS ,前后端访问跨域问题

补充:问题:CORS ,前后端访问跨域问题

我这边的解决方法是:

myAxios.defaults.withCredentials = true; // 配置为true,表示前端向后端发送请求的时候,需要携带上凭证cookie

整体的:

import axios from "axios";// axios.defaults.withCredentials = true; // 允许携带凭证
// const isDev = process.env.NODE_ENV === 'development';// 创建实例时配置默认值
const myAxios = axios.create({LookupAddress: undefined, LookupAddressEntry: undefined,baseURL: 'http://localhost:8080/api'
});// const myAxios: AxiosInstance = axios.create({
//     baseURL: isDev ? 'http://localhost:8080/api' : '线上地址',
// });myAxios.defaults.withCredentials = true; // 配置为true,表示前端向后端发送请求的时候,需要携带上凭证cookie
// 创建实例后修改默认值// 添加请求拦截器
myAxios.interceptors.request.use(function (config) {// 在发送请求之前做些什么console.log('我要发请求了')return config;
}, function (error) {// 对请求错误做些什么return Promise.reject(error);
});// 添加响应拦截器
myAxios.interceptors.response.use(function (response) {// 2xx 范围内的状态码都会触发该函数。// 对响应数据做点什么console.log('我收到你的响应了',response)return response.data;
}, function (error) {// 超出 2xx 范围的状态码都会触发该函数。// 对响应错误做点什么return Promise.reject(error);
});// Add a request interceptor
// myAxios.interceptors.request.use(function (config) {
//     console.log('我要发请求啦', config)
//     // Do something before request is sent
//     return config;
// }, function (error) {
//     // Do something with request error
//     return Promise.reject(error);
// });
//
//
// // Add a response interceptor
// myAxios.interceptors.response.use(function (response) {
//     console.log('我收到你的响应啦', response)
//     // 未登录则跳转到登录页
//     if (response?.data?.code === 40100) {
//         const redirectUrl = window.location.href;
//         window.location.href = `/user/login?redirect=${redirectUrl}`;
//     }
//     // Do something with response data
//     return response.data;
// }, function (error) {
//     // Do something with response error
//     return Promise.reject(error);
// });export default myAxios;

后端配置:

在 Spring Boot 中,可以通过在配置类中添加 <font style="color:rgb(199, 37, 78);background-color:rgb(249, 242, 244);">@CrossOrigin</font> 注解或实现 <font style="color:rgb(199, 37, 78);background-color:rgb(249, 242, 244);">WebMvcConfigurer</font> 接口并重写 <font style="color:rgb(199, 37, 78);background-color:rgb(249, 242, 244);">addCorsMappings</font> 方法来允许特定来源的跨域请求:

package com.rainbowsea.yupao.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 WebMvcConfg implements WebMvcConfigurer {@Overridepublic void addCorsMappings(CorsRegistry registry) {//设置允许跨域的路径registry.addMapping("/**")//设置允许跨域请求的域名//当**Credentials为true时,**Origin不能为星号,需为具体的ip地址【如果接口不带cookie,ip无需设成具体ip】.allowedOrigins("http://localhost:9527", "http://127.0.0.1:9527", "http://127.0.0.1:8082", "http" +"://127.0.0.1:8083","http://127.0.0.1:8080","http://127.0.0.1:5173")//是否允许证书 不再默认开启.allowCredentials(true)//设置允许的方法.allowedMethods("*")//跨域允许时间.maxAge(3600);}
}

相关博客链接:

  • https://blog.csdn.net/yuanlong12178/article/details/147143201 参考该 blog 解决的
  • https://blog.csdn.net/xhmico/article/details/122338365 这篇也不错。

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'// 导出配置对象,使用ES模块语法
export default defineConfig({plugins: [vue()], // 启用Vue插件server: { // 注意:在Vite的新版本中,配置项`devServer`已更名为`server`proxy: {'/api': {target: 'http://localhost:8080/api', // 目标服务器地址changeOrigin: true, // 是否改变源// 如果需要路径重写,可以取消以下行的注释// pathRewrite: { 1'^/api': '' }}}}
});

https://blog.csdn.net/yuanlong12178/article/details/147143201 内容备份如下:

一、Vue.js 中跨域请求未配置 CORS 的常见原因

(一)浏览器的同源策略限制

浏览器的同源策略限制了从一个源加载的文档或脚本与来自另一个源的资源之间的交互能力。当你的前端应用和后端 API 位于不同的域或端口时,就会触发 CORS 问题。

(二)后端未正确配置 CORS

如果后端服务器未正确设置 CORS 相关的响应头,浏览器将无法允许跨域请求。

二、解决方案

(一)后端配置 CORS

在后端服务器上进行 CORS 配置是解决跨域问题的根本方法。以下是一些常见后端框架的 CORS 配置示例:

  1. Node.js (使用 Express)
const express = require('express');
const cors = require('cors');
const app = express();app.use(cors({origin: 'http://localhost:8080', // 允许的源methods: ['GET', 'POST', 'PUT', 'DELETE'], // 允许的 HTTP 方法allowedHeaders: ['Content-Type', 'Authorization'] // 允许的头部字段
}));app.get('/api/data', (req, res) => {res.json({ message: 'CORS is working!' });
});app.listen(3000, () => {console.log('Server is running on port 3000');
});
2. Spring Boot

在 Spring Boot 中,可以通过在配置类中添加 <font style="color:rgb(199, 37, 78);background-color:rgb(249, 242, 244);">@CrossOrigin</font> 注解或实现 <font style="color:rgb(199, 37, 78);background-color:rgb(249, 242, 244);">WebMvcConfigurer</font> 接口并重写 <font style="color:rgb(199, 37, 78);background-color:rgb(249, 242, 244);">addCorsMappings</font> 方法来允许特定来源的跨域请求:

import org.springframework.context.annotation.Bean;
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 WebConfig implements WebMvcConfigurer {@Overridepublic void addCorsMappings(CorsRegistry registry) {registry.addMapping("/api/**").allowedOrigins("http://localhost:8080").allowedMethods("GET", "POST", "PUT", "DELETE").allowCredentials(true);}
}
(二)前端配置代理

在开发环境中,可以通过配置代理服务器来绕过浏览器的同源策略限制。Vue CLI 提供了代理配置功能,可以通过修改 <font style="color:rgb(199, 37, 78);background-color:rgb(249, 242, 244);">vue.config.js</font> 文件中的 <font style="color:rgb(199, 37, 78);background-color:rgb(249, 242, 244);">devServer.proxy</font> 选项来实现。

module.exports = {devServer: {proxy: {'/api': {target: 'http://api.example.com', // 目标服务器changeOrigin: true, // 是否改变源pathRewrite: { '^/api': '' } // 路径重写}}}
};
(三)使用第三方库

使用像 <font style="color:rgb(199, 37, 78);background-color:rgb(249, 242, 244);">cors</font> 这样的第三方库可以大大简化 CORS 的配置过程。安装库后,可以在后端应用中引入并配置它:

const cors = require('cors');
const express = require('express');const app = express();app.use(cors({origin: 'http://localhost:8080',methods: 'GET,POST,PUT,DELETE',allowedHeaders: 'Content-Type,Authorization'
}));// Rest of the server setup
(四)JSONP(不推荐)

JSONP 是一种较老的跨域解决方案,通过 <font style="color:rgb(199, 37, 78);background-color:rgb(249, 242, 244);"><script></font> 标签的跨域加载机制来实现。它只支持 GET 请求,且存在安全风险,因此在现代应用中不推荐使用。

三、最佳实践建议

(一)优先在后端配置 CORS

在生产环境中,优先在后端服务器上进行 CORS 配置,以确保安全性。

(二)开发环境使用代理

在开发环境中,使用 Vue CLI 的代理功能来解决跨域问题,避免修改后端代码。

(三)避免使用 JSONP

由于 JSONP 存在安全风险且只支持 GET 请求,建议避免使用。

四、总结

在 Vue.js 中,解决跨域请求未配置 CORS 的问题可以通过后端配置 CORS、前端配置代理、使用第三方库等方法来实现。后端配置 CORS 是最推荐的方法,因为它可以确保生产环境的安全性。在开发环境中,使用 Vue CLI 的代理功能可以快速解决跨域问题。希望本文的介绍能帮助你在 Vue.js 开发中更好地处理跨域请求,提升应用的性能和用户体验。

最后:

“在这个最后的篇章中,我要表达我对每一位读者的感激之情。你们的关注和回复是我创作的动力源泉,我从你们身上吸取了无尽的灵感与勇气。我会将你们的鼓励留在心底,继续在其他的领域奋斗。感谢你们,我们总会在某个时刻再次相遇。”

在这里插入图片描述

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

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

相关文章

洛谷 P13014 [GESP202506 五级] 最大公因数-普及-

题目描述 对于两个正整数 a,ba,ba,b&#xff0c;他们的最大公因数记为 gcd⁡(a,b)\gcd(a,b)gcd(a,b)。对于 k>3k > 3k>3 个正整数 c1,c2,…,ckc_1,c_2,\dots,c_kc1​,c2​,…,ck​&#xff0c;他们的最大公因数为&#xff1a; gcd⁡(c1,c2,…,ck)gcd⁡(gcd⁡(c1,c2,……

前端-CSS-day1

目录 1、初识CSS 2、CSS引入方式 3、标签选择器 4、类选择器 5、id选择器 6、通配符选择器 7、画盒子 8、字体大小 9、字体粗细 10、字体倾斜 11、行高 12、行高-垂直居中 13、字体族 14、font属性 15、文本缩进 16、文本对齐方式 17、图片对齐方式 18、文本…

解锁万能文件内容提取器:Apache Tika

01 引言 在日常工作中&#xff0c;你是否曾为这些场景头疼过&#xff1f; 堆积如山的PDF、Word、Excel文档&#xff0c;如何快速提取关键信息&#xff1f;用户上传的文件五花八门&#xff0c;如何自动识别类型并安全处理&#xff1f;构建搜索引擎时&#xff0c;如何让系统“读懂…

gemini-cli初体验

目录 准备配置环境变量运行使用基础使用配置MCP调用MCP 参考 准备 NodeJS 18版本 配置环境变量 设置GEMINI_API_KEY 变量&#xff0c;在https://aistudio.google.com/apikey创建key 设置代理&#xff08;可选&#xff0c;取决于您的网络&#xff09;,不配置可能会报错 api e…

Java --类变量和类方法--main语句

1. 类变量和类方法 介绍&#xff1a; 类变量也叫静态变量/静态属性&#xff0c;是该类的所有对象共享的变量&#xff0c;任何一个该类的对象去访问它时&#xff0c;取到的都是相同的值&#xff0c;同样任何一个该类的对象去修改它时&#xff0c;修改的也是同一个变量。 语法…

spring boot项目配置使用minion

一. Minio概述 Minio是一款开源的高性能对象存储服务,兼容Amazon S3 API,适用于私有云、混合云及边缘计算场景。它采用分布式架构设计,支持水平扩展,提供数据加密、版本控制、生命周期管理等企业级功能,适用于存储非结构化数据(如图片、视频、日志等)。 核心特性 S3兼…

<5>_Linux进程控制

目录 一&#xff0c;进程创建&#xff0c;fork/vfork 1&#xff0c;fork创建子进程&#xff0c;操作系统都做了什么 2&#xff0c;写时拷贝的做了什么 二&#xff0c;进程终止&#xff0c;echo $&#xff1f; 1&#xff0c;进程终止时&#xff0c;操作系统做了什么 2&…

阿里云服务器正确配置 Docker 国内镜像的方法

&#x1f4e6; 原理说明&#xff1a;什么是“Docker 镜像加速器”&#xff1f; Docker 默认会从官方仓库 registry-1.docker.io 拉取镜像。由于网络原因&#xff0c;在中国大陆访问这个地址较慢甚至失败。 镜像加速器的作用是&#xff1a; 在国内部署一个缓存服务器&#xf…

PH热榜 | 2025-07-05

1. todai 标语&#xff1a;你的第一份个性化快乐生活指数 介绍&#xff1a;Todai 是你个人的人工智能助手&#xff0c;帮助你获得心理清晰和情感平衡。你可以随时随地记录自己的情绪&#xff0c;发现情绪变化的规律&#xff0c;并获取基于科学的工具。 产品网站&#xff1a;…

c++ duiLib环境集成

duiLib的Github链接&#xff1a;https://github.com/duilib/duilib 使用vcpkg快速安装duilib以及配置。步骤如下&#xff1a; 1、用git下载vcpkg&#xff0c;下载报错&#xff0c;这个错误通常表明在Git克隆过程中&#xff0c;与GitHub服务器的SSL连接被意外重置。改用http下…

一项基于粒子图像测速PIV系统的泥石流模拟冲击实验

1实验背景 全国进入“七下八上”防汛关键期&#xff0c;泥石流作为山区常见地质灾害&#xff0c;突发性强&#xff0c;破坏力大&#xff0c;对人民群众生命财产安全造成威胁&#xff0c;传统观测手段难以实现对碎石运动轨迹与水流场耦合效应的精细观测。而粒子图像测速PIV技术…

ADAS功能介绍

ADAS功能介绍 ADAS&#xff08;Advanced Driving Assistance System&#xff09;高级驾驶辅助系统&#xff0c;可分为如下几大类功能。 IA&#xff08;Information Assist&#xff09;信息辅助类 IA类功能&#xff0c;均不包含驾驶行为的控制。这些功能又可以进一步细分为三…

【LUT技术专题】CLUT代码讲解

本文是对CLUT技术的代码讲解&#xff0c;原文解读请看CLUT文章讲解。 1、原文概要 CLUT利用矩阵在保持3DLUT映射能力的前提下显著降低了参数量。整体流程如下所示。 整体还是基于3D-LUT的框架&#xff0c;只不过添加了一个压缩自适应的变换矩阵。作者使用的损失函数在3DLUT的…

在LinuxMint 22.1(Ubuntu24.04)上安装使用同花顺远航版

刚刚在LinuxMint 22.1(Ubuntu24.04)安装完成同花顺远航版&#xff0c;体验特别好&#xff0c;忍不住要及时给深受Linux平台无好用行情软件之苦的朋友们进行分享了。在此之前我一直只能用同花顺Linux原生版的行情软件&#xff0c;但是该软件只有很基本的行情功能&#xff0c;而且…

解决vue3路由配合Transition时跳转导致页面不渲染的问题

问题复现 <router-view v-slot"{ Component, route }"><transition name"fade" mode"out-in"><keep-alive><component :is"Component" :key"route.path" /></keep-alive></transition>…

java: 无法访问org.springframework.boot.SpringApplication,类文件具有错误的版本 61.0, 应为 52.0

问题 java: 无法访问org.springframework.boot.SpringApplication 错误的类文件: /D:/.m2/repository/org/springframework/boot/spring-boot/3.3.13/spring-boot-3.3.13.jar!/org/springframework/boot/SpringApplication.class 类文件具有错误的版本 61.0, 应为 52.0 请删除…

Docker拉取nacos镜像

以下是使用 Docker 拉取并运行 Nacos&#xff08;阿里巴巴开源的配置中心和服务发现组件&#xff09;镜像的详细指南&#xff1a; 1. 拉取 Nacos 官方镜像 拉取最新版 Nacos 镜像&#xff08;推荐指定版本以避免兼容性问题&#xff09;&#xff1a; # 拉取最新版本&#xff…

【CTF-Web环境搭建】kali

Kali虚拟机下载 这里在官网上下载下kali虚拟机Get Kali | Kali Linux 网速比较慢的话打开一下加速器 下载完成后 得到一个压缩包 选择一个合适的地方将这个压缩包解压一下 记住这个文件目录 这里为了后续方便 简历一个叫做Virtual Machines的文件夹 里面就可以放不同的虚拟机…

微服务架构的演进:迈向云原生

微服务架构的演进&#xff1a;迈向云原生ps:最近在学习的时候&#xff0c;发现好多技术方案最终都有云原生的影子&#xff0c;这里浅谈一下云原生的发展趋势随着互联网技术的发展&#xff0c;软件开发模式经历了从单体应用到微服务架构的重大转变。而在今天&#xff0c;微服务架…

服务器如何配置防火墙规则开放/关闭端口?

配置服务器防火墙规则&#xff08;开放/关闭端口&#xff09;是服务器安全管理的基础操作&#xff0c;不同操作系统和防火墙工具的配置方式有所不同。以下是主流系统的详细操作指南&#xff1a;一、Linux系统&#xff08;iptables/firewalld/UFW&#xff09;1. iptables&#x…