前端跨域問題怎么在后端解決

目錄

簡單的解決方法:

添加配置類:

為什么會跨域

1. 什么是源

2. URL結構

3. 同源不同源舉🌰

同源例子

不同源例子

4. 瀏覽器為什么需要同源策略

5. 常規前端請求跨域


簡單的解決方法:

添加配置類:

package com.company.usercenter.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", "OPTIONS").allowCredentials(true).allowedHeaders("*");}
}

解決方法寫完了,下面是具體的解釋,請需要看的小伙伴選擇性查收????????

首先解釋下這個配置類:

這個 CorsConfig 配置類是用于解決前后端分離開發中的跨域問題,以下是對代碼的詳細解釋:

  1. 注解與類定義 @Configuration:表明這是一個 Spring 配置類,用于定義配置 bean 或引入其他配置。 implements WebMvcConfigurer:實現 Spring 的 WebMvcConfigurer 接口,通過重寫接口方法擴展 Spring MVC 的功能,這里用于配置跨域規則。

  2. addCorsMappings 方法 通過 CorsRegistry 對象注冊跨域規則: registry.addMapping("/"): 定義跨域規則的匹配路徑,"/" 表示匹配所有后端接口路徑,即所有接口都應用該跨域規則。 allowedOrigins("http://localhost:5173"): 指定允許訪問后端接口的前端來源(Origin)。這里明確允許 http://localhost:5173(通常是前端開發服務器地址)發起的跨域請求,不能使用 * 搭配 allowCredentials(true)(因為 * 會忽略憑證攜帶)。 allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS"): 允許的請求方法,包括常見的 GET(查詢)、POST(提交)、PUT(更新)、DELETE(刪除),以及跨域預檢請求 OPTIONS。 allowCredentials(true): 允許前端請求攜帶認證憑證(如 Cookie、HTTP 認證等)。開啟后,前端需配合 withCredentials: true(如 Axios 中 myAxios.defaults.withCredentials = true)使用。 allowedHeaders("*"): 允許前端請求攜帶任意請求頭(Header)。若需限制,可改為具體頭名稱(如 "Content-Type", "Authorization"),提升安全性。

  3. 整體功能 該配置類為后端接口開啟跨域支持,允許 http://localhost:5173 來源的前端應用,使用多種請求方法、攜帶憑證和任意請求頭訪問后端所有接口,解決前后端分離開發中的跨域問題。實際生產環境中,allowedOrigins 和 allowedHeaders 應根據需求細化,避免過度開放。

為什么會跨域

說到跨域不得不談的就是瀏覽器的同源策略,跨域也是因為瀏覽器這個機制引起的,這個機制的存在還是在于安全。

1. 什么是源

Web內容的源由用于訪問它的URL 的方案(協議),主機(域名)和端口定義。只有當方案,主機和端口都匹配時,兩個對象具有相同的起源。

同源不同源一句話就可以判斷:就是url中 scheme host port 都相同即為同源。

下面認識下url 結構中的這三個部分。

2. URL結構

URL 代表著是統一資源定位符(Uniform Resource Locator)。URL 無非就是一個給定的獨特資源在 Web 上的地址。

URL有如下結構組成:

  • Schme 或者 Protocol

img

  • Domain Name 也叫做host域名

img

  • port 端口號

img

  • Parameters參數

img

  • Anchor 錨點,一般用于定位位置

img

3. 同源不同源舉🌰

舉一下同源不同源的例子,便于

同源例子
例子原因
http://example.com/app1/index.html http://example.com/app2/index.html相同的 scheme http 和host
http://Example.com:80 http://example.comhttp 默認80端口所以同源
不同源例子
例子原因
http://example.com/app1 https://example.com/app2不同的協議
http://example.com http://myapp.example.com不同的host
http://example.com http://example.com:8080不同的端口
4. 瀏覽器為什么需要同源策略

同源策略是一個重要的安全策略,它用于限制一個origin的文檔或者它加載的腳本如何能與另一個源的資源進行交互。它能幫助阻隔惡意文檔,減少可能被攻擊的媒介。

5. 常規前端請求跨域

在沒有前后端分離的時候,跨域問題往往是很少的。因為前后端都部署到一起。現在前后端分離不管vue /react 面臨跨域請求的問題。

下面是引用官網描述的一張圖來解釋跨域:

img

跨源域資源共享(CORS)機制允許 Web 應用服務器進行跨源訪問控制,從而使跨源數據傳輸得以安全進行。現代瀏覽器支持在 API 容器中(例如 XMLHttpRequest 或 Fetch)使用 CORS,以降低跨源 HTTP 請求所帶來的風險。

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

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

相關文章

【中間件】brpc_基礎_execution_queue

execution_queue 源碼 1 簡介 execution_queue.h 是 Apache BRPC 中實現 高性能異步任務執行隊列 的核心組件,主要用于在用戶態線程(bthread)中實現任務的 異步提交、有序執行和高效調度。 該模塊通過解耦任務提交與執行過程,提…

java學習之數據結構:一、數組

主要是對數組所有的東西進行總結,整理 適合小白~ 目錄 1.什么是數組 1.1數組定義 1.2數組創建 1)靜態創建 2)動態創建 1.3數組遍歷 1)for和while遍歷 2)foreach遍歷 2.數組越界問題及解決 2.1數組越界問題 2…

[Survey]SAM2 for Image and Video Segmentation: A Comprehensive Survey

BaseInfo TitleSAM2 for Image and Video Segmentation: A Comprehensive SurveyAdresshttps://arxiv.org/abs/2503.12781Journal/Time2503Author四川大學,北京大學 1. Introduction 圖像分割專注于識別單個圖像中的目標、邊界或紋理,而視頻分割則將這…

用Maven定位和解決依賴沖突

用Maven定位和解決依賴沖突 一、依賴沖突的常見表現二、定位沖突依賴的4種方法2.1 使用Maven命令分析依賴樹2.2 使用IDE可視化工具2.3 使用Maven Enforcer插件2.4 運行時分析 三、解決依賴沖突的5種方案3.1 排除特定傳遞依賴3.2 統一指定版本(推薦)3.3 使…

穿越數據森林與網絡迷宮:樹與圖上動態規劃實戰指南

在 C 算法的浩瀚宇宙中,樹與圖就像是神秘的迷宮和茂密的森林,充滿了未知與挑戰。而動態規劃則是我們探索其中的神奇羅盤,幫助我們找到最優路徑。今天,就讓我們一起深入這片神秘領域,揭開樹與圖上動態規劃的神秘面紗&am…

UDP / TCP 協議

目錄 一、前言: 數據封裝與分用: 二、網絡協議分層模型: 三、UDP / TCP 協議 UDP 協議: 1、UDP 協議段格式: 2、UDP 的特點: TCP 協議: 1、TCP 協議段格式: 2、TCP 協議的十…

Python 實現的運籌優化系統數學建模詳解(動態規劃模型)

相關代碼鏈接:https://download.csdn.net/download/heikediguoshinib/90713747?spm1001.2014.3001.5503 一、引言 在計算機科學與數學建模的廣闊領域中,算法如同精密的齒輪,推動著問題的解決與系統的運行。當面對復雜的優化問題時&…

langfuse本地安裝

目錄 安裝命令項目準備用openai測試 安裝命令 本地(docker compose):使用 Docker Compose 在你的機器上于 5 分鐘內運行 Langfuse。 # 獲取最新的 Langfuse 倉庫副本 git clone https://github.com/langfuse/langfuse.git cd langfuse# 運行 …

每天學一個 Linux 命令(35):dos2unix

每天學一個 Linux 命令(35):dos2unix 命令簡介 dos2unix 是一個用于將 Windows/DOS 格式的文本文件轉換為 Unix/Linux 格式的實用工具。它主要處理行尾符的轉換(將 CRLF 轉換為 LF),同時也能處理編碼問題和字符集轉換。這個命令在跨平臺文件共享、代碼遷移和系統管理場…

第6章 Python 基本數據類型詳解(int, float, bool, str)細節補充

文章目錄 Python 基本數據類型深入解析(int, float, bool, str)一、整型(int)的底層機制二、浮點型(float)的陷阱與解決方案三、布爾型(bool)的底層本質四、字符串(str)的不可變性與優化五、類型間的隱式轉換與陷阱六、性能優化與工具總結:關鍵細節與最佳實踐Python…

19. LangChain安全與倫理:如何避免模型“幻覺“與數據泄露?

引言:當AI成為企業"數字員工"時的責任邊界 2025年某金融機構因AI客服泄露用戶信用卡信息被罰款2300萬美元。本文將基于LangChain的安全架構與Deepseek-R1的合規實踐,揭示如何構建既強大又安全的AI系統。 一、AI安全風險矩陣 1.1 2025年最新威…

Java快速上手之實驗六

1. 編寫ItemEventDemo.java,當選中或取消選中單選鈕、復選鈕和列表框時顯示所選的結果。 2.編寫GUIExample.java,當選中或取消選中單選鈕、復選鈕時在標簽中顯示相應結果。 import javax.swing.*; import java.awt.*; import java.awt.event.…

QT6 源(72):閱讀與注釋單選框這個類型的按鈕 QRadioButton,及各種屬性驗證,

&#xff08;1&#xff09;按鈕間的互斥&#xff1a; &#xff08;2&#xff09;源碼來自于頭文件 qradiobutton . h &#xff1a; #ifndef QRADIOBUTTON_H #define QRADIOBUTTON_H#include <QtWidgets/qtwidgetsglobal.h> #include <QtWidgets/qabstractbutton.h>…

【算法滑動窗口】 將x減到0的最小操作數

將x減到0的最小操作數 個人總結的八步歸納AI的歸納**8步歸納法&#xff08;極簡直白版&#xff09;**1. 問題本質2. 問題特征3. 切入點4. 解決流程5. 每步目標與操作6. 注意事項7. 最終目標8. 整體總結 代碼對照&#xff08;逐行解析&#xff09;舉個栗子&#x1f330;**一句話…

RISC-V GPU架構研究進展:在深度學習推理場景的可行性驗證

一、新型算力架構的突圍戰 在英偉達CUDA生態主導的GPU市場中&#xff0c;RISC-V架構正以?開源基因?和?模塊化設計?開辟新賽道。當前主流GPU架構面臨兩大痛點&#xff1a; 指令集封閉性?&#xff1a;NVIDIA的SASS指令集與AMD的GCN/RDNA架構均采用私有指令編碼&#xff0c…

LVGL -滑動條

1 滑動條 LVGL 的滑動條(Slider)是一個非常有用的控件,允許用戶通過拖動滑塊或點擊滑條來選擇一個值。 1.1 基本定義 滑動條允許用戶在一個預定義的數值范圍內選擇一個特定的值。它通常由一個軌道(track)和一個滑塊(thumb)組成。用戶可以通過點擊或拖動滑塊來調整數值。…

ROS2學習筆記|Python實現訂閱消息并朗讀的詳細步驟

本教程將詳細介紹如何使用 ROS 2 實現一個節點訂閱另一個節點發布的消息&#xff0c;并將接收到的消息通過 espeakng 庫進行朗讀的完整流程。以下步驟假設你已經安裝好了 ROS 2 環境&#xff08;以 ROS 2 Humble 為例&#xff09;&#xff0c;并熟悉基本的 Linux 操作。 注意&…

WPF封裝常用的TCP、串口、Modbus、MQTT、Webapi、PLC通訊工具類

WPF封裝常用通訊工具類 下面我將為您封裝常用的TCP、串口、Modbus、MQTT、WebAPI和PLC通訊工具類,適用于WPF應用程序開發。 一、TCP通訊工具類 using System; using System.Net.Sockets; using System.Text; using System.Threading.Tasks;public class TcpClientHelper : …

npm pnpm yarn 設置國內鏡像

國內鏡像 常用的國內鏡像&#xff1a; 淘寶鏡像 https://registry.npmmirror.com 騰訊云鏡像?? https://mirrors.cloud.tencent.com/npm/ 華為云鏡像?? https://repo.huaweicloud.com/repository/npm/ CNPM&#xff08;阿里系&#xff09; ?? https://r.cnpmjs.org/ 清華…

P4552 [Poetize6] IncDec Sequence 題解

P4552 [Poetize6] IncDec Sequence - 洛谷 差分貪心 根據題目&#xff1a;一段區間都加1或減1 &#xff0c; 可以想到差分 構建差分數組&#xff1a;sub 我們要讓除了sub[1] , 其他全是0 我們可以的操作是&#xff1a;l1 , r-1 or l-1 , r1 or 一個數1 / -1 所…