補充:問題: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
英文地址,請注明出處:http://en.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…