若依框架跨域問題解決方案與實(shí)戰(zhàn)配置
1. 若依框架跨域問題全景解析作為國內(nèi)主流的企業(yè)級(jí)快速開發(fā)框架若依Ruoyi在實(shí)際部署中經(jīng)常面臨跨域訪問的挑戰(zhàn)。最近在技術(shù)社區(qū)看到不少開發(fā)者反饋前后端分離模式下明明按照文檔配置了CORS為什么還是出現(xiàn)Access-Control-Allow-Origin報(bào)錯(cuò) 這個(gè)問題看似簡單實(shí)則涉及網(wǎng)絡(luò)協(xié)議、框架配置、部署環(huán)境等多重因素。本文將結(jié)合若依4.7.5版本從HTTP協(xié)議層到代碼實(shí)現(xiàn)層徹底講透跨域問題的解決方案。關(guān)鍵提示跨域問題本質(zhì)是瀏覽器的安全限制與服務(wù)端通信能力無關(guān)。即使看到401/403狀態(tài)碼也要先解決CORS問題才能進(jìn)行后續(xù)調(diào)試。2. 跨域原理深度剖析2.1 瀏覽器同源策略機(jī)制同源策略Same-Origin Policy要求協(xié)議、域名、端口三者完全一致。在若依前后端分離架構(gòu)中常見以下典型場景會(huì)觸發(fā)跨域開發(fā)環(huán)境前端8080端口訪問后端9200端口生產(chǎn)環(huán)境主站域名訪問api子域名測試環(huán)境IP直連訪問域名服務(wù)2.2 預(yù)檢請(qǐng)求Preflight機(jī)制對(duì)于非簡單請(qǐng)求如Content-Type為application/json瀏覽器會(huì)先發(fā)送OPTIONS請(qǐng)求進(jìn)行預(yù)檢。若依框架中以下操作會(huì)觸發(fā)預(yù)檢使用RequestBody接收J(rèn)SON參數(shù)自定義請(qǐng)求頭如攜帶tokenPUT/DELETE等非標(biāo)準(zhǔn)方法// 典型觸發(fā)預(yù)檢的若依控制器代碼 PostMapping(/update) public AjaxResult update(RequestBody SysUser user) { return success(userService.updateUser(user)); }2.3 CORS響應(yīng)頭核心參數(shù)響應(yīng)頭作用若依配置示例值A(chǔ)ccess-Control-Allow-Origin允許的源域名* 或 https://ruoyi.vipAccess-Control-Allow-Methods允許的HTTP方法GET,POST,PUT,DELETEAccess-Control-Allow-Headers允許的請(qǐng)求頭Authorization,Content-TypeAccess-Control-Max-Age預(yù)檢結(jié)果緩存時(shí)間秒36003. 若依框架跨域配置實(shí)戰(zhàn)3.1 基礎(chǔ)版Spring Boot配置類在ruoyi-admin模塊的config包下新增CorsConfigConfiguration public class CorsConfig implements WebMvcConfigurer { Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping(/**) .allowedOrigins(*) .allowedMethods(GET, POST, PUT, DELETE) .allowedHeaders(*) .allowCredentials(true) .maxAge(3600); } }常見坑點(diǎn)allowCredentials(true)時(shí)不能使用allowedOrigins(*)必須指定具體域名3.2 進(jìn)階版Nginx層統(tǒng)一處理在生產(chǎn)環(huán)境推薦使用Nginx統(tǒng)一處理跨域避免每個(gè)應(yīng)用重復(fù)配置server { listen 80; server_name api.ruoyi.vip; location / { add_header Access-Control-Allow-Origin $http_origin; add_header Access-Control-Allow-Methods GET,POST,PUT,DELETE,OPTIONS; add_header Access-Control-Allow-Headers Content-Type,Authorization; add_header Access-Control-Allow-Credentials true; if ($request_method OPTIONS) { return 204; } proxy_pass http://127.0.0.1:9200; } }3.3 特殊場景Sa-Token整合方案當(dāng)集成Sa-Token時(shí)需要額外處理token相關(guān)頭部// 在SaTokenConfig中補(bǔ)充配置 Configuration public class SaTokenConfig implements WebMvcConfigurer { Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping(/**) .allowedOrigins(https://admin.ruoyi.vip) .allowedMethods(*) .allowedHeaders(satoken, Content-Type) .exposedHeaders(satoken) .allowCredentials(true); } }4. 疑難問題排查指南4.1 常見報(bào)錯(cuò)與解決方案錯(cuò)誤現(xiàn)象根本原因解決方案403 Forbidden (CORS preflight channel error)預(yù)檢請(qǐng)求未通過確保OPTIONS請(qǐng)求返回200/204Missing CORS header Access-Control-Allow-Origin響應(yīng)頭未正確配置檢查Nginx或Spring配置是否有誤Credential is not supported if the CORS header Access-Control-Allow-Origin is *憑證模式與通配符沖突改用具體域名并開啟allowCredentials4.2 瀏覽器調(diào)試技巧Chrome開發(fā)者工具中Network標(biāo)簽勾選Disable cache過濾選項(xiàng)輸入OPTIONS查找預(yù)檢請(qǐng)求查看Response Headers是否包含CORS相關(guān)頭使用curl模擬預(yù)檢請(qǐng)求curl -X OPTIONS http://api.ruoyi.vip/user/list \ -H Origin: http://localhost:8080 \ -H Access-Control-Request-Method: POST \ -H Access-Control-Request-Headers: content-type \ -I4.3 若依特定問題排查場景1代碼生成器接口跨域在ruoyi-generator模塊單獨(dú)添加配置Bean public FilterRegistrationBeanCorsFilter generatorCorsFilter() { UrlBasedCorsConfigurationSource source new UrlBasedCorsConfigurationSource(); CorsConfiguration config new CorsConfiguration(); config.addAllowedOriginPattern(*); config.addAllowedHeader(*); config.addAllowedMethod(*); source.registerCorsConfiguration(/tool/gen/**, config); return new FilterRegistrationBean(new CorsFilter(source)); }場景2Swagger文檔跨域在application.yml中增加spring: mvc: pathmatch: matching-strategy: ant_path_matcher5. 安全加固建議生產(chǎn)環(huán)境務(wù)必指定具體域名而非通配符.allowedOrigins(https://admin.ruoyi.vip, https://mobile.ruoyi.vip)敏感接口建議結(jié)合CORS與權(quán)限校驗(yàn)PreAuthorize(ss.hasPermi(system:user:edit)) PostMapping(/update) public AjaxResult update(RequestBody SysUser user) { // 業(yè)務(wù)邏輯 }定期檢查CORS配置是否被惡意修改-- 監(jiān)控系統(tǒng)參數(shù)表變更 SELECT * FROM sys_config WHERE config_key LIKE %cors% AND update_time DATE_SUB(NOW(), INTERVAL 1 DAY);實(shí)際項(xiàng)目中我們?cè)龅絅ginx配置被意外覆蓋導(dǎo)致跨域失效的情況。后來通過在若依系統(tǒng)監(jiān)控中增加配置變更提醒徹底解決了這類問題。建議大家在解決基礎(chǔ)跨域問題后進(jìn)一步考慮這種防御性編程措施。

相關(guān)新聞

從SHA1到SHA256:密碼學(xué)哈希函數(shù)原理、演進(jìn)與安全實(shí)踐指南

從SHA1到SHA256:密碼學(xué)哈希函數(shù)原理、演進(jìn)與安全實(shí)踐指南

1. 項(xiàng)目概述:從“加密”到“哈?!钡恼J(rèn)知躍遷提到“加密算法”,很多人的第一反應(yīng)是像AES、RSA那樣,用一把密鑰把明文變成密文,需要時(shí)再用密鑰解開的雙向過程。但今天要聊的SHA系列,雖然常被歸在“加密算法”的大類里&a…

2026/8/1 1:29:36 閱讀更多
高校數(shù)字化通識(shí)教育的標(biāo)準(zhǔn)化配套路徑

高校數(shù)字化通識(shí)教育的標(biāo)準(zhǔn)化配套路徑

數(shù)字化崗位需求持續(xù)擴(kuò)張背景下,高校通用AI教學(xué)資源供給不足的矛盾逐步凸顯。教育部2025年高校畢業(yè)生就業(yè)質(zhì)量調(diào)研數(shù)據(jù)顯示,經(jīng)管、文法、普通工科61.4%的應(yīng)屆生崗位,明確要求求職者掌握基礎(chǔ)AI工具操作能力,但國內(nèi)超七成本科院校未開…

2026/8/1 1:29:36 閱讀更多
Git常用誤區(qū)總結(jié)

Git常用誤區(qū)總結(jié)

1. .gitignore vs .git/info/exclude 情景:在使用claude時(shí)通常會(huì)在當(dāng)前工作區(qū)生成CLUADE.md,在提交時(shí)一不小心會(huì)將CLUADE.md也提交到倉庫。 解決方法:使用.git/info/exclude 增加提交commit時(shí)應(yīng)該忽略的文件。它的特點(diǎn)是本地私有管理。而.git…

2026/8/1 1:29:36 閱讀更多
代碼審查進(jìn)階:Copilot Code Review 的 Agent Skills 與 MCP 已 GA,如何接入并守住只讀邊界

代碼審查進(jìn)階:Copilot Code Review 的 Agent Skills 與 MCP 已 GA,如何接入并守住只讀邊界

承接:MCP 2026-07-28 無狀態(tài)化遷移清單 Agent Gateway 治理調(diào)研日期:2026-07-31本文目標(biāo):用倉庫內(nèi) Agent Skills 和經(jīng)過允許列表約束的 MCP 工具,給 Copilot Code Review 補(bǔ)上項(xiàng)目規(guī)則與外部上下文,同時(shí)避免把“代碼審…

2026/8/1 19:01:50 閱讀更多
大模型時(shí)代注釋規(guī)范重構(gòu)(2024最新ISO/IEEE雙標(biāo)對(duì)齊版)

大模型時(shí)代注釋規(guī)范重構(gòu)(2024最新ISO/IEEE雙標(biāo)對(duì)齊版)

更多請(qǐng)點(diǎn)擊: https://codechina.net 第一章:大模型時(shí)代注釋規(guī)范重構(gòu)的必要性與范式躍遷 傳統(tǒng)注釋規(guī)范誕生于人工主導(dǎo)的代碼理解范式——注釋是寫給“下一個(gè)開發(fā)者”的靜態(tài)說明書,強(qiáng)調(diào)語法正確性、函數(shù)職責(zé)和邊界條件。然而,在大模…

2026/8/1 19:01:50 閱讀更多
2026年解碼矩陣品牌口碑盤點(diǎn):誰是行業(yè)最受認(rèn)可的實(shí)力派?

2026年解碼矩陣品牌口碑盤點(diǎn):誰是行業(yè)最受認(rèn)可的實(shí)力派?

在安防監(jiān)控、指揮中心、會(huì)議顯示等專業(yè)視聽領(lǐng)域,解碼矩陣作為信號(hào)處理的核心“大腦”,其性能與穩(wěn)定性直接決定了整套系統(tǒng)的成敗。面對(duì)市場上琳瑯滿目的品牌與產(chǎn)品,客戶往往陷入選擇困難:一線大牌固然可靠,但價(jià)格高昂&a…

2026/8/1 19:01:50 閱讀更多
AI模型部署卡在升級(jí)?PyTorch→v2.3兼容性斷層全解析(內(nèi)部灰度測試數(shù)據(jù)首次公開)

AI模型部署卡在升級(jí)?PyTorch→v2.3兼容性斷層全解析(內(nèi)部灰度測試數(shù)據(jù)首次公開)

更多請(qǐng)點(diǎn)擊: https://codechina.net 第一章:AI模型部署卡在升級(jí)?PyTorch→v2.3兼容性斷層全解析(內(nèi)部灰度測試數(shù)據(jù)首次公開) PyTorch v2.3 的發(fā)布帶來了顯著的性能優(yōu)化與新算子支持,但灰度測試數(shù)據(jù)顯示&a…

2026/8/1 19:01:50 閱讀更多
寶可夢(mèng)數(shù)據(jù)管理終極指南:如何一鍵生成合法寶可夢(mèng)數(shù)據(jù)

寶可夢(mèng)數(shù)據(jù)管理終極指南:如何一鍵生成合法寶可夢(mèng)數(shù)據(jù)

寶可夢(mèng)數(shù)據(jù)管理終極指南:如何一鍵生成合法寶可夢(mèng)數(shù)據(jù) 【免費(fèi)下載鏈接】PKHeX-Plugins Plugins for PKHeX 項(xiàng)目地址: https://gitcode.com/gh_mirrors/pk/PKHeX-Plugins 你是否曾經(jīng)花費(fèi)數(shù)小時(shí)手動(dòng)調(diào)整寶可夢(mèng)的個(gè)體值、技能和特性,只為讓它們符合游…

2026/8/1 19:01:50 閱讀更多
Jetson Nano邊緣AI開發(fā)板實(shí)戰(zhàn):從TensorRT優(yōu)化到多路視頻流處理

Jetson Nano邊緣AI開發(fā)板實(shí)戰(zhàn):從TensorRT優(yōu)化到多路視頻流處理

1. 項(xiàng)目概述:從“玩具”到“生產(chǎn)力”的邊緣AI開發(fā)板第一次拿到Jetson Nano Developer Kit(開發(fā)者套件)的時(shí)候,我差點(diǎn)以為這又是一個(gè)樹莓派級(jí)別的“玩具”。巴掌大的板子,看起來平平無奇。但當(dāng)我真正把它接上電源&#…

2026/8/1 18:51:50 閱讀更多
AMAT 0100-02186 I/O 分配 PCB

AMAT 0100-02186 I/O 分配 PCB

AMAT 0100-02186 I/O分配PCB板是應(yīng)用材料(Applied Materials)公司生產(chǎn)的一款用于半導(dǎo)體設(shè)備的I/O信號(hào)分配電路板。該型號(hào)(0100-02186)的核心特點(diǎn)如下:專用于Endura等半導(dǎo)體工藝腔室。集成信號(hào)路由與分配功能。連接控制…

2026/8/1 0:09:33 閱讀更多
Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動(dòng)機(jī)

Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動(dòng)機(jī)

Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動(dòng)機(jī)是日本日清(Nissei)品牌的一款工業(yè)用三相異步電機(jī),適用于自動(dòng)化設(shè)備及通用機(jī)械驅(qū)動(dòng)。該型號(hào)(FFMN-32L-10-T0 40AX)的核心特點(diǎn)如下:三相交流異步電動(dòng)機(jī)。額定…

2026/8/1 0:09:33 閱讀更多
AMAT 0100-02186 I/O 分配 PCB

AMAT 0100-02186 I/O 分配 PCB

AMAT 0100-02186 I/O分配PCB板是應(yīng)用材料(Applied Materials)公司生產(chǎn)的一款用于半導(dǎo)體設(shè)備的I/O信號(hào)分配電路板。該型號(hào)(0100-02186)的核心特點(diǎn)如下:專用于Endura等半導(dǎo)體工藝腔室。集成信號(hào)路由與分配功能。連接控制…

2026/8/1 0:09:33 閱讀更多
Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動(dòng)機(jī)

Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動(dòng)機(jī)

Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動(dòng)機(jī)是日本日清(Nissei)品牌的一款工業(yè)用三相異步電機(jī),適用于自動(dòng)化設(shè)備及通用機(jī)械驅(qū)動(dòng)。該型號(hào)(FFMN-32L-10-T0 40AX)的核心特點(diǎn)如下:三相交流異步電動(dòng)機(jī)。額定…

2026/8/1 0:09:33 閱讀更多