前端 | CORS 跨域問題解決

問題Access to fetch at 'http://localhost:3000/save' from origin 'http://localhost:5174' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.。

分析CORS (跨域請求) 被攔截?——?http://localhost:5174 請求 http://localhost:3000Access-Control-Allow-Origin 頭部沒有配置,導致請求被瀏覽器攔截


?解決:前端可以嘗試進行跨域請求。

①修改后端
(假設是 Express): 在 server.js(或 index.js)中添加:
// 記得ctrl+shift+y打開終端,在里頭運行 npm install cors
const cors = require("cors"); 
app.use(cors());

(假設包管理中的? "type": "module"
// 記得ctrl+shift+y打開終端,在里頭運行 npm install cors
import cors from 'cors';
app.use(cors());
根據情況,是? express服務器?還是 "type": "module",判斷是用require還是import

②手動設置響應頭:
app.use((req, res, next) => {res.header('Access-Control-Allow-Origin', 'http://localhost:5174');res.header('Access-Control-Allow-Methods', 'GET, POST, OPTIONS');res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization');if (req.method === 'OPTIONS') {return res.status(200).end();}next();});

?或者

app.use((req, res, next) => {res.header("Access-Control-Allow-Origin", "*");  // 或指定特定前端地址res.header("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS");res.header("Access-Control-Allow-Headers", "Content-Type, Authorization");next();
});

?③如果后端無法修改,可以在 fetch 請求中加入 mode: "cors"
const response = await fetch("http://localhost:3000/save", {method: "POST",mode: "cors",  // 添加 CORS 模式headers: {"Content-Type": "application/json"},body: JSON.stringify({ content: text })
});

完整代碼:

import cors from 'cors';
import express from 'express';const app = express();
const PORT = 3000;  // 后端服務器端口// 允許跨域請求
app.use(cors({origin: 'http://localhost:5174', // 允許的前端域名methods: ['GET', 'POST'],    // 允許的請求方法allowedHeaders: ['Content-Type', 'Authorization'],  // 允許的請求頭
})); // 額外的跨域處理
app.use((req, res, next) => {res.header('Access-Control-Allow-Origin', 'http://localhost:5174');res.header('Access-Control-Allow-Methods', 'GET, POST, OPTIONS');res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization');if (req.method === 'OPTIONS') {return res.status(200).end();}next();});app.use(express.json());    // 解析JSON請求體// 添加 get請求,檢查后端是否正常運行
app.get('/',  (req, res) => {res.send('√后端運行正常!');
});

注: 注意順序,press和cors的順序

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/72815.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/72815.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/72815.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

fastapi房產銷售系統

說明: 我希望用fastapi寫幾個接口,查詢房產交易系統的幾條數據,然后在postman里面測試 查詢客戶所有預約記錄(含房源信息)需要對應銷售經理查詢客戶所有訂單(含房源信息)統計銷售經理名下所有房…

導軌式ARM工業控制器:組態軟件平臺的“神經中樞”

工業自動化領域,組態軟件平臺扮演著至關重要的角色。它不僅是工業控制系統的“大腦”,更是實現智能化、高效化生產的關鍵工具。而作為組態軟件平臺的硬件支撐,導軌式ARM工控機(以下簡稱“工控機”)憑借其緊湊的設計、強…

每日一題——矩陣置零問題的原地算法

矩陣置零問題的原地算法 問題描述示例約束條件進階要求 問題分析難點分析解題思路 代碼實現代碼說明 測試用例測試用例 1測試用例 2測試用例 3 總結 問題描述 給定一個 m x n 的矩陣,如果矩陣中的某個元素為 0,則需要將其所在的行和列的所有元素都置為 …

Springboot中的@Value注解:用法與潛在問題探索

在Spring Boot開發中,有個非常實用的注解,那就是Value!它可以幫助我們輕松地從配置文件中讀取屬性值。想象一下,在應用程序中管理各種配置,比如數據庫連接信息、服務URL或者API密鑰等,使用Value是多么方便呀…

C++后端服務器開發技術棧有哪些?有哪些資源或開源庫拿來用?

一、 C后臺服務器開發是一個涉及多方面技術選擇的復雜領域,特別是在高性能、高并發的場景下。以下是C后臺服務器開發的一種常見技術路線,涵蓋了從基礎到高級的技術棧。 1. 基礎技術棧 C標準庫 C11/C14/C17/C20:使用現代C特性,如…

25年攜程校招社招求職能力北森測評材料計算部分:備考要點與誤區解析

在求職過程中,能力測評是篩選候選人的重要環節之一。對于攜程這樣的知名企業,其能力測評中的材料計算部分尤為關鍵。許多求職者在備考時容易陷入誤區,導致在考試中表現不佳。本文將深入解析材料計算部分的實際考察方向,并提供針對…

golang進階知識專項-理解值傳遞

在 Go 語言中,所有函數的參數傳遞都是值傳遞(Pass by Value)。當你將一個變量作為參數傳遞給函數時,實際上傳遞的是該變量的副本,而不是變量本身。理解這一點對于避免常見的編程錯誤至關重要。根據不同的類型&#xff…

RuoYi框架添加自己的模塊(學生管理系統CRUD)

RuoYi框架添加自己的模塊(學生管理系統) 框架順利運行 首先肯定要順利運行框架了,這個我不多說了 設計數據庫表 在ry數據庫中添加表tb_student 表字段如圖所示 如圖所示 注意id字段是自增的 注釋部分是后面成功后前端要展示的部分 導入…

中級網絡工程師面試題參考示例(1)

一、基礎理論 1. OSI七層模型與TCP/IP四層模型的區別是什么?請舉例說明第三層(網絡層)和第四層(傳輸層)的核心協議。 參考答案: OSI七層模型分為物理層、數據鏈路層、網絡層、傳輸層、會話層、表示層、應用…

RHCE9.0版本筆記5:防火墻的本地/遠程登錄方式

一、防火墻登錄方式全景圖 華為防火墻支持多種管理訪問方式,根據安全等級和場景需求可分為: graph LR A[管理方式] --> B[本地登錄] A --> C[遠程登錄] B --> B1(Console) B --> B2(Web) C --> C1(SSH) C --> C2(Telnet) C --> C…

2025最新群智能優化算法:山羊優化算法(Goat Optimization Algorithm, GOA)求解23個經典函數測試集,MATLAB

一、山羊優化算法 山羊優化算法(Goat Optimization Algorithm, GOA)是2025年提出的一種新型生物啟發式元啟發式算法,靈感來源于山羊在惡劣和資源有限環境中的適應性行為。該算法旨在通過模擬山羊的覓食策略、移動模式和躲避寄生蟲的能力&…

博弈論算法

一、減法游戲 初始有一個數 n。 兩個玩家輪流操作,每次可以減去 1 到 9 之間的任意整數。 將數減到 0 的玩家獲勝。 可以發現規律: 減法游戲只需要判斷當前數取模是否為0,即可快速判斷勝負。 例題: Leetcode 292. Nim 游戲 …

Excel·VBA江西省預算一體化工資表一鍵處理

每月制作工資表導出為Excel后都需要調整格式,刪除0數據的列、對工資表項目進行排序、打印設置等等,有些單位還分有“行政”、“事業”2個工資表就需要操作2次。顯然,這種重復操作的問題,可以使用VBA代碼解決 目錄 代碼使用說明1&a…

深度學習驅動的跨行業智能化革命:技術突破與實踐創新

第一章 深度學習的技術范式演進與核心架構 1.1 從傳統機器學習到深度神經網絡的跨越 深度學習的核心在于通過多層次非線性變換自動提取數據特征,其發展歷程可劃分為三個階段:符號主義時代的規則驅動(1950s-1980s)、連接主義時代的淺層網絡(1990s-2000s)以及深度學習時代…

嵌入式學習筆記-卡爾曼濾波,PID,MicroPython

文章目錄 卡爾曼濾波卡爾曼濾波的核心思想卡爾曼濾波的數學模型1. 狀態轉移模型(預測系統狀態)2. 觀測模型(預測測量值) 卡爾曼濾波的五個關鍵步驟1. 預測狀態2. 預測誤差協方差3. 計算卡爾曼增益4. 更新狀態5. 更新誤差協方差 卡…

一周熱點-文本生成中的擴散模型- Mercury Coder

一、背景知識 在人工智能領域,文本生成模型一直是研究的熱點。傳統的大型語言模型多采用自回歸架構,從左到右逐個預測下一個標記。這種模型雖然在生成連貫文本方面表現出色,但在速度上存在一定的局限性,因為它需要按順序生成每個標…

Qt調試功能使用方法

QT編程環境 QT在Windows操作系統下的三種編程環境搭建。 方案編程環境編譯器調試器1Qt CreatorMinGW GCCGDB2Qt CreatorMicrosoft Visual C CompilerDebugging Tools for Widows3Microsoft Visual Studio VS自帶VS自帶 方案提及的QT安裝程序及壓縮包均能在官網Index of /off…

vulnhub靶場之【digitalworld.local系列】的mercy靶機

前言 靶機:digitalworld.local-mercy,IP地址為192.168.10.11 攻擊:kali,IP地址為192.168.10.6 kali采用VMware虛擬機,靶機選擇使用VMware打開文件,都選擇橋接網絡 這里官方給的有兩種方式,一…

Fiddler抓取App接口-Andriod/IOS配置方法

Andriod配置方法: 1)確保手機和Fiddler所在主機在同一個局域網中 2)獲取Fiddler所在主機的ip地址,通過cmd命令進入命令編輯器,輸入ipconfig -all,找到IPv4地址,記下該地址 3)對手機…

步進電機軟件細分算法解析與實踐指南

1. 步進電機細分技術概述 步進電機是一種將電脈沖信號轉換為角位移的執行機構,其基本運動單位為步距角。傳統步進電機的步距角通常為 1.8(對應 200 步 / 轉),但在高精度定位場景下,這種分辨率已無法滿足需求。細分技術…