跨域問題解釋及前后端解決方案(SpringBoot)

一、問題引出

有時,控制臺出現如下問題。

二、為什么會有跨域

2.1瀏覽器同源策略

瀏覽器的同源策略 ( Same-origin policy )是一種重要的安全機制,用于限制一個源( origin )的文檔或

腳本如何與另一個源的資源進行交互。這個策略防止了惡意網站讀取其他站點上的敏感數據。

例如:被釣魚網站收集信息,使用 AJAX 發起惡意請求,傳遞轉賬信息給銀行服務器

作用: 保護瀏覽器中網站的安全, 限制 AJAX 只能向同源 URL 發起請求

源: Web 網頁內容的源由用于訪問它的 URL 的方案( 協議 )、 主機名 (域名)和 端口 三部分組成。只

有當協議、主機和端口都匹配時,兩個對象才具有相同的源。

同源: 網頁加載時所在源,和 AJAX 請求時的源(協議,域名,端口號)全部相同即為同源。

三、什么是跨域

跨域:一個源 的文檔 / 腳本,加載 另一個源 的資源就產生了跨域。

例如:網頁所在源和 AJAX 訪問的源(協議,域名,端口)有一個不同,就發生了跨域訪問,請求響應

是失敗的。

四、后端解決方案

4.1****方案一:局部配置

CORS (后端) 采用 CORS (跨域資源共享),一種基于 HTTP 頭的機制 ,該機制通過允許服務器標示除了它自己

以外的其他源(域、協議或端口),使得瀏覽器允許這些源訪問加載自己的資源。

后端 :設置 Access-Control-Allow-Origin 響應頭字段,允許除了它自己以外的源來訪問自己

的資源

前端 :正常發起 AJAX 請求,無需額外操作

直接在控制器或者特定的方法上使用 @CrossOrigin 注解來為單個 API 接口添加 CORS 支持

4.2、方案二:全局配置

新增 config 包,在 config 包下新建 CorsConfig 配置類

@Configuration
public class CorsConfig implements WebMvcConfigurer {/*** 跨域處理** @param registry*/@Overridepublic void addCorsMappings(CorsRegistry registry) {// 所有接口registry.addMapping("/**")// 所有源.allowedOrigins("*")// .allowedOrigins("http://localhost:3000")// 允許的方法.allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")// 允許的請求頭.allowedHeaders("*");// 是否允許攜帶 Cookie 等憑證信息// .allowCredentials(true);}
}

注意:如果同時設置了 allowedOrigins(“*”) 并開啟了 allowCredentials(true) ,這是不安

全的做法,因為這允許任何來源攜帶憑證訪問 API 。瀏覽器出于安全考慮,可能會拒絕這種設置。

五、前端解決方案

在開發環境中, 可以使用 vue-cli 內置的 代理功能 來解決跨域問題。在項目的 vue.config.js 文件

中添加如下配置:

// 開發環境代理配置
proxy: {'/api': {// 后端訪問基礎路徑target: 'http://localhost:8080',changeOrigin: true,pathRewrite: {'^/api': ''}}
}

同時,修改 request.js 里的基礎訪問路徑

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

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

相關文章

【NLP 30、文本匹配任務 —— 傳統機器學習算法】

目錄 一、文本匹配任務的定義 1.狹義解釋 2.廣義解釋 二、文本匹配的應用 1.問答對話 2.信息檢索 3.文本匹配任務應用 三、智能問答 1.智能問答的基本思路 依照基礎資源劃分: 依照答案產出方式劃分 依照NLP相關技術劃分 四、智能問答的價值 1.智能客服 2.Faq知識庫問…

開源表單、投票、測評平臺部署教程

填鴨表單聯合寶塔面板深度定制,自寶塔面板 9.2 版本開始,在寶塔面板-軟件商店中可以一鍵部署填鴨表單系統。 簡單操作即可擁有屬于自己的表單問卷系統,快速賦能業務。即使小白用戶也能輕松上手。 社區版體驗地址:https://demo.tduckapp.com/home 前端項目地址: tduck-fro…

Elasticsearch 限制索引大小與索引模板匹配沖突解決方案

文章目錄 背景介紹環境限制索引大小創建 ILM(索引生命周期管理)策略創建 ILM 策略 創建索引模板并關聯 ILM 策略使用索引模板應用 ILM 策略 解決索引模板匹配沖突? 解決方案🔹 方案 1:修改 index_patterns(推薦&#…

[LeetCode]day33 150.逆波蘭式求表達值 + 239.滑動窗口最大值

逆波蘭式求表達值 題目鏈接 題目描述 給你一個字符串數組 tokens ,表示一個根據 逆波蘭表示法 表示的算術表達式。 請你計算該表達式。返回一個表示表達式值的整數。 注意: 有效的算符為 ‘’、‘-’、‘*’ 和 ‘/’ 。 每個操作數(運…

論文閱讀筆記:UniFace: Unified Cross-Entropy Loss for Deep Face Recognition

論文閱讀筆記:UniFace: Unified Cross-Entropy Loss for Deep Face Recognition 1 背景2 創新點3 方法3.1 回顧softmax損失3.2 統一交叉熵損失3.3 人臉驗證中的UCE損失3.4 進一步的優化3.4.1 邊際UCE損失3.4.2 平衡BCE損失 4 實驗4.1 消融實驗4.2 和SOTA方法對比 論…

Metal學習筆記七:片元函數

知道如何通過將頂點數據發送到 vertex 函數來渲染三角形、線條和點是一項非常巧妙的技能 — 尤其是因為您能夠使用簡單的單行片段函數為形狀著色。但是,片段著色器能夠執行更多操作。 ? 打開網站 https://shadertoy.com,在那里您會發現大量令人眼花繚亂…

騰訊云 | 微搭低代碼快速開發數據表單應用

如上所示,登錄騰訊云微搭低代碼業務控制臺,開始新創建一個應用,創建應用的方式包括,根據實際的業務需求,從模版列表中選擇一個模板填入數據模型創建新應用,使用微搭組件自主設計數據模型創建新應用&#xf…

儲油自動化革命,網關PROFINET與MODBUS網橋的無縫融合,錦上添花

儲油行業作為能源供應鏈的關鍵環節,其自動化和監控系統的可靠性和效率至關重要。隨著工業4.0的推進,儲油設施越來越多地采用先進的自動化技術以提高安全性、降低成本并優化運營。本案例探討了如何通過使用穩聯技術PROFINET轉MODBUS模塊網關網橋&#xff…

【前端】JavaScript 備忘清單(超級詳細!)

文章目錄 入門介紹打印調試斷點調試數字let 關鍵字const 關鍵字變量字符串算術運算符注釋賦值運算符字符串插值字符串數字Math全局函數 JavaScript 條件操作符邏輯運算符 &&比較運算符邏輯運算符空值合并運算符 ?? if Statement (if 語句)Ternary Operator (三元運算…

Linux cat 命令

cat(英文全拼:concatenate)命令用于連接文件并打印到標準輸出設備上,它的主要作用是用于查看和連接文件。 使用權限 所有使用者 語法格式 cat [選項] [文件] 參數說明: -n:顯示行號,會在輸…

PARETO PROMPT OPTIMIZATION

題目 帕累托提示優化 論文地址:https://openreview.net/forum?idHGCk5aaSvE 摘要 自然語言迅速優化或及時工程已成為一種強大的技術,可以解鎖大型語言模型(LLMS)的各種任務的潛力。盡管現有方法主要集中于最大化LLM輸出的單一特…

前端面試題---.onChange() 事件與焦點機制解析

.onChange() 事件與焦點的總結 焦點(focus) 指的是 當前正在操作的元素(如輸入框、按鈕)。只有一個元素能同時擁有焦點。 原生 HTML 事件: onchange (需要失去焦點才觸發) 用戶輸入后&#x…

Nest系列:從環境變量到工程化實踐-2

文章目錄 [toc]一、環境搭建與基礎配置1.1 安裝驗證(新增完整示例)1.2 多環境配置示例 二、模塊化配置實戰2.1 根模塊高級配置2.2 數據庫模塊專用配置 三、配置獲取最佳實踐3.1 類型安全獲取示例3.2 枚舉工程化示例 四、高級場景示例4.1 動態配置熱更新4…

3.對象生活的地方—Java環境搭建

1、你要養魚,總得先有一個魚塘吧。挖一個魚塘來養魚,你需要去做下面這些事情: 規劃和設計:確定魚塘的位置、大小和形狀,繪制設計圖。標記和測量:使用測量工具標記魚塘的邊界和深度。挖掘:使用挖…

玩轉大模型——Trae AI IDE國內版使用教程

文章目錄 Trae AI IDE完備的 IDE 功能強大的 AI 助手 安裝 Trae 并完成初始設置管理項目什么是 “工作空間”?創建項目 管理插件安裝插件從 Trae 的插件市場安裝從 VS Code 的插件市場安裝 禁用插件卸載插件插件常見問題暫不支持安裝 VS Code 插件市場中某個版本的插…

數據結構1-4 隊列

一、隊列是什么? 先舉一個日常例子,排隊買飯。 排隊買飯 大家按先來后到的順序,在窗口前排隊買飯,先到先得,買完之后走開,輪到下一位買,新來的人排在隊尾,不能插隊。 可見&#x…

(十 四)趣學設計模式 之 策略模式!

目錄 一、 啥是策略模式?二、 為什么要用策略模式?三、 策略模式的實現方式四、 策略模式的優缺點五、 策略模式的應用場景六、 總結 🌟我的其他文章也講解的比較有趣😁,如果喜歡博主的講解方式,可以多多支…

探秘基帶算法:從原理到5G時代的通信變革【三】Turbo 編解碼

文章目錄 2.2 Turbo 編解碼2.2.1 基本概念與系統構成2.2.2 編碼過程分步解析交織器遞歸系統卷積編碼器復接器總結 2.2.3 譯碼算法分類與原理Turbo碼的強大主要來源于其解碼器理論基礎解碼過程詳解交織與解交織譯碼算法總結 2.2.4 Turbo碼的應用場景無線通信衛星通信深空通信 2.…

Yocto + 樹莓派攝像頭驅動完整指南

—— 從驅動配置、Yocto 構建,到 OpenCV 實戰 在樹莓派上運行攝像頭,在官方的 Raspberry Pi OS 可能很簡單,但在 Yocto 項目中,需要手動配置驅動、設備樹、軟件依賴 才能確保攝像頭正常工作。本篇文章從 BSP 驅動配置、Yocto 關鍵…

TCP協議(20250304)

1. TCP TCP: 傳輸控制協議(Transmission Control Protocol),傳輸層協議之一(TCP,UDP) 2. TCP與UDP UDP(用戶數據報協議) 面向數據報無連接不安全不可靠(盡最大努力交…