springmvc跨域解決方案

在Spring MVC中處理跨域請求(CORS,Cross-Origin Resource Sharing)通常涉及到配置HTTP響應頭,以允許來自不同源的請求。Spring MVC提供了多種方式來配置CORS,包括全局配置和局部配置。

  1. 使用@CrossOrigin注解
    在控制器的方法上使用@CrossOrigin注解是最簡單的方法之一。
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class MyController {@CrossOrigin(origins = "http://example.com", maxAge = 3600)@GetMapping("/data")public MyData getData() {return new MyData("Some Data");}
}
  1. 配置WebMvcConfigurer
    如果你想要全局配置CORS,可以通過實現WebMvcConfigurer接口并重寫addCorsMappings方法來實現。
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("/**") // 匹配所有路徑.allowedOrigins("http://example.com") // 允許的源.allowedMethods("GET", "POST", "PUT", "DELETE") // 允許的方法.allowedHeaders("*") // 允許的頭部.allowCredentials(true) // 是否發送cookies.maxAge(3600); // 預檢請求的緩存時間(秒)}
}
  1. 使用GlobalCorsConfigurationSource和CorsFilter
    如果你想要更細粒度的控制或者需要在非Spring MVC環境中應用CORS,可以使用GlobalCorsConfigurationSource和CorsFilter。
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;
import java.util.Arrays;@Configuration
public class CorsConfig {@Beanpublic CorsFilter corsFilter() {UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();CorsConfiguration config = new CorsConfiguration();config.setAllowCredentials(true);config.setAllowedOrigins(Arrays.asList("http://example.com")); // 允許的源列表config.setAllowedMethods(Arrays.asList("GET", "POST", "PUT", "DELETE")); // 允許的方法列表config.setAllowedHeaders(Arrays.asList("*")); // 允許的頭部列表,使用*表示接受所有頭部信息source.registerCorsConfiguration("/**", config); // 對所有路徑應用此配置return new CorsFilter(source);}
}
  1. 使用@CrossOrigin在全局配置中啟用默認配置(不推薦)
    雖然不推薦在生產環境中使用全局的@CrossOrigin注解(因為它可能會影響到所有的接口),但在開發階段或者在測試環境中,可以這樣做:
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.config.annotation.*;
import org.springframework.context.annotation.*;
import org.springframework.*;
import java.*; // 注意:這里的導入只是為了示例,實際開發中應避免使用通配符導入所有包。
import static java.*; // 同上。
import javax.*; // 同上。
import org.*; // 同上。注意:盡量避免使用通配符導入所有包。正確的做法是只導入需要的包。例如:import org.springframework.*。這里的寫法僅為示例,實際開發中請避免。正確的做法是:import org.springframework.*; import javax.*; import java.*; import java.*; import static java.*; import static javax.*; import static org.*; 這樣寫只是為了示例,實際開發中請避免使用通配符導入所有包。正確的做法是:只導入需要的包。例如:import org.*; 但請注意,這里的寫法只是為了示例,實際開發中請

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

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

相關文章

btstack移植之安全配對(二)

3.13.3 Legacy配對首先,我們回復的paring response中,可以看到我們不支持secure connection,所以我們走的是legacy配對模式。圖3-74 secure連接不支持然后,master在pairing confirm包中回復了confirm value。圖3-75 master發送con…

FRP配置( CentOS 7 上安裝 FRP教程 )

** 如果你們公司沒有公網IP,但是又想實現內網穿透,遠程調用接口,在家也能調用公司服務器,但是nkg ssl有問題,花生殼坑壁,那么FRP是你最佳的選擇!!!** 不過有個前提&#…

第三次mysql作業

建立庫建立mydb11_syu庫2.創建s表,創建sc表二.插入數據向s表插入數據2.向sc表插入數據三.查詢1.分別查詢student表和score表的所有記錄2.查詢student表的第2條到5條記錄3.從student表中查詢計算機系和英語系的學生的信息4.從student表中查詢年…

不同場景下git指令的搭配

添加賬號 git config --global user.name "YourName" git config --global user.email "your_emailexample.com"設置 Git 默認分支名稱為 main: git config --global init.defaultBranch main初始化倉庫: git init配置SSH 密鑰 如果…

NLP——遷移學習

一、遷移學習的概念 1.預訓練模型(Pretrained model) 定義: 簡單來說別人訓練好的模型。一般預訓練模型具備復雜的網絡模型結構;一般是在大量的語料下訓練完成的。 2.微調(Fine-tuning) 定義:一般是對預訓練語言模型,進行垂直領域數據的微調,…

Ubuntu 安裝

文章目錄硬件準備下載 Ubuntu 鏡像創建可啟動 USB從 USB 驅動器啟動安裝 Ubuntu不要忘記更新!用了十多年的筆記本,手邊正好有個500G的固態,準備換上。考慮到機器的硬件配置,現在使用windows10實在是有點卡,ubuntu卻剛好…

【46】MFC入門到精通——MFC顯示實時時間,獲取系統當前時間GetCurrentTime()、獲取本地時間GetLocalTime()

文章目錄1 MFC獲取時間方法方法一:獲取系統當前時間GetCurrentTime()方法二:獲取本地時間GetLocalTime()使用GetTickCount()獲取程序運行時間2 MFC顯示實時時間 使用方法2.1 獲取時間2.2 類向導 添加定時器函數 OnTimer2.3 初始化 設置定時器2.4 定時器函…

Linux717 SWAP擴容;邏輯卷條帶化

root192.168.235.20s password:┌────────────────────────────────────────────────────────────────────┐│ ? MobaXterm 20.0 ? ││ …

人類社會發展過程中的熵增定律

引子研究美國羅斯福新政期間的法案為什么會對美國經濟恢復起作用?與千金買馬骨和移木賞金之間的區別與聯系?以下為豆包 AI回答一、羅斯福新政法案對美國經濟起作用的原因羅斯福新政(1933-1939年)通過一系列政策應對大蕭條&#x…

Spring-AI系列-入門篇-核心概念、組件和生產要素

原文-Spring AI知識庫,歡迎大家評論互動 師父領進門,修行靠自己。 Spring AI is an application framework for AI engineering. Its goal is to apply to the AI domain Spring ecosystem design principles such as portability and modular design an…

從瀏覽器到服務器:TCP 段的網絡傳輸之旅

本文以簡化的網絡架構為例,詳細介紹了當你在瀏覽器中輸入網址(例如www.google.com)并按下回車鍵后,TCP段的完整傳輸過程。我們將探討DNS解析、ARP、TCP/IP封裝、PAT和路由如何協同工作,將數據從個人電腦通過局域網和廣…

HCIE - 云計算拿下后的職業選擇如何規劃?

Hello!大家好,小編是一名專注 IT 領域的資深探索家。我們聊聊HCIE - 云計算,這個認證作為華為認證體系中云計算領域的專家級認證,標志著持有者具備企業級云架構設計、復雜云平臺運維及跨場景技術落地能力。但認證本身只是職業進階…

1-創建Vue3項目

創建Vue3項目前提 已安裝 18.3 或更高版本的 Node.js vue 官網 https://vuejs.org/ 創建一個 Vue 應用 ① 新建項目目錄,使用 VSCode 打開 VSCode 可安裝 Vue-Official 插件協助開發 ② 執行 create vue 指令創建 vue 應用 npm create vuelatest這一指令將…

Codex,Copilot 是什么

Codex是什么 Codex 是 OpenAI 研發的一款專注于代碼生成的大型語言模型,它可以根據自然語言描述自動編寫程序代碼,在軟件開發、自動化測試等領域展現出了強大的應用潛力。下面為你詳細介紹: 1. 核心功能 代碼生成:Codex 能夠依據自然語言指令生成代碼,像函數、類或者完整…

Typecho插件開發:自定義表單驗證規則addRule實戰指南

文章目錄 Typecho表單驗證進階:為插件和主題添加自定義addRule驗證規則 引言 一、Typecho表單驗證基礎 1.1 Typecho表單系統概述 1.2 addRule方法解析 二、自定義驗證規則實現 2.1 創建自定義驗證類 2.2 注冊自定義驗證規則 2.3 使用自定義驗證規則 三、高級驗證場景實現 3.1 …

數據分布是如何影響目標檢測精度的

文章目錄一、研究背景與目標模型效果提升數據集優化二、研究問題明細各方向的關聯性與核心邏輯1. 高質量數據集的高效篩選與主動學習應用2. 基于推理結果的數據補充與增強方向優化3. 多類別場景下目標尺度與模型精度的關聯性4. 損失函數與數據增強對精度的量化影響5. 目標類型專…

Python 網絡爬蟲 —— 代理服務器

一、會話(Session)(一)核心邏輯HTTP 本身無記憶,每次請求獨立。會話(Session) 就是為解決這問題,讓客戶端(瀏覽器)和服務器 “記住” 交互狀態(比…

Vue在線預覽Excel和Docx格式文件

前提:本次示例基于Vue2.x,所用插件為Vue-Office。 一、Vue-Office 插件簡介 Vue-Office 是一個一站式解決方案,支持多種 Office 文件格式的在線預覽,包括: Word(.docx)Excel(.xlsx、…

提升(Boosting)及 Python 示例

咱們結合這張圖,把 “提升” 想象成 “做錯題本 請老師補課” 的過程:第一波數據(最上面的圓圈):“第一次作業”假設你第一次做 100 道數學題(圖中圓圈里的綠點白點代表不同的題),做…

【生產實踐】Linux中NAS掛載丟失后提示“過舊的文件句柄”錯誤解決

太長不看版: 問題:nas掛載在系統里掉了,使用df或ls訪問目錄提示過舊的文件句柄解決過程: 和機房聯系,發現NAS服務器重啟了重新執行mount發現掛不上先umount掉當前掛載,再重新執行mount命令問題解決 umount …