Springboot 跨域攔截器配置說明

錯誤代碼

  • 跨域設置
@Configuration
public class WebConfig implements WebMvcConfigurer {/*** cors 跨域配置*/@Overridepublic void addCorsMappings(CorsRegistry registry) {registry.addMapping("/**").allowedMethods("GET", "HEAD", "POST", "PUT", "DELETE", "OPTIONS").allowCredentials(true).allowedOriginPatterns("*").allowCredentials(true).maxAge(3600);}
}
  • 業務攔截器
public class LoginInterceptor implements HandlerInterceptor {// 白名單private static final Set<String> whiteList = new HashSet<>();static {whiteList.add("/index.html");}@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {System.out.println(request.getMethod());String url = request.getServletPath();if (whiteMatcher(url)) {return true;}String token = request.getHeader(tokenConfig.getHeader());System.out.println(token);return true;}@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable Exception ex) throws Exception {LoginCache.removeUser(); // 從當前線程移除登錄用戶信息}
}

問題

  • 業務攔截其中可能會攔截到"OPTIONS"類型的請求。

正確代碼

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;
import java.util.Collections;@Configuration
public class CorsConfig {@Beanpublic CorsFilter corsFilter() {CorsConfiguration config = new CorsConfiguration();config.setAllowedOriginPatterns(Collections.singletonList("*"));config.setAllowedMethods(Arrays.asList("GET", "POST", "PUT", "DELETE", "OPTIONS"));config.setAllowedHeaders(Collections.singletonList("*"));config.setAllowCredentials(true);config.setMaxAge(86400L);UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();source.registerCorsConfiguration("/**", config);return new CorsFilter(source);}
}

底層代碼說明

  • WebMvcConfigurer 方式:通過 addCorsMappings 配置的 CORS 規則會被封裝為 HandlerMapping 級別的 CORS 處理器,它在 DispatcherServlet 處理請求時才會生效。
  • CorsFilter 方式:直接注冊 CorsFilter 作為一個獨立的過濾器,它在 FilterChain 最前端執行,早于 DispatcherServlet 和所有攔截器。

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

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

相關文章

受不了github的網絡限制了,我開源了一個圖床工具 gitee-spring-boot-starter

嗨嗨嗨~ 我老馬又又來了&#xff01;&#xff01;&#xff01;上次寫了一篇我開源了一款阿里云OSS的spring-boot-starter&#xff0c;然后買的資源包到期了&#xff0c;后面又想白&#xff08;開&#xff09;嫖&#xff08;源&#xff09;的路子&#xff0c;首先想到了使用gith…

基于labview的聲音采集、存儲、處理

程序1&#xff1a;基于聲卡的數據采集 程序2&#xff1a;基于聲卡的雙聲道模擬輸出 程序3&#xff1a;聲音信號的采集與存儲 程序4&#xff1a;聲音信號的功率譜分析 程序5&#xff1a;基于labview的DTMF

第一次經歷項目上線

這幾天沒寫csdn&#xff0c;因為忙著項目上線的問題&#xff0c;我這階段改了非常多的前端bug哈哈哈哈&#xff0c;說幾個比較好的bug思想&#xff01; 這個頁面算是我遇到的比較大的bug&#xff0c;因為我一開始的邏輯都寫好了&#xff0c;詢價就是在點擊快遞公司彈出彈框的時…

基于EFISH-SCB-RK3576/SAIL-RK3576的消防機器人控制器技術方案?

&#xff08;國產化替代J1900的應急救援智能化解決方案&#xff09; 一、硬件架構設計? ?極端環境防護系統? ?防爆耐高溫設計?&#xff1a; 采用陶瓷纖維復合裝甲&#xff08;耐溫1200℃持續1小時&#xff09;&#xff0c;通過GB 26784-2023消防設備防爆認證IP68防護等級…

企業開發工具git的使用:從入門到高效團隊協作

前言&#xff1a;本文介紹了Git的安裝、本地倉庫的創建與配置&#xff0c;以及工作區、暫存區和版本庫的區分。詳細講解了版本回退、撤銷修改等操作&#xff0c;并深入探討了分支管理&#xff0c;包括分支的創建、切換、合并、刪除及沖突解決。此外&#xff0c;還介紹了遠程操作…

Java反射機制詳解:原理、應用與實戰

一、反射機制概述 Java反射(Reflection)是Java語言的一個強大特性&#xff0c;它允許程序在運行時(Runtime)獲取類的信息并操作類或對象的屬性、方法等。反射機制打破了Java的封裝性&#xff0c;但也提供了極大的靈活性。 反射的核心思想&#xff1a;在運行時而非編譯時動態獲…

成功案例丨從草圖到鞍座:用先進的發泡成型仿真技術變革鞍座制造

案例簡介 在鞍座制造中&#xff0c;聚氨酯泡沫成型工藝是關鍵環節&#xff0c;傳統依賴實驗測試的方法耗時且成本高昂。為解決這一問題&#xff0c;意大利自行車鞍座制造商 Selle Royal與Altair合作&#xff0c;采用Altair Inspire PolyFoam軟件進行發泡成型仿真。 該工具幫助團…

隧道結構安全在線監測系統解決方案

一、方案背景 隧道是地下隱蔽工程&#xff0c;會受到潛在、無法預知的地質因素影響。隨著我國公路交通建設的發展&#xff0c;隧道占新建公路里程的比例越來越大。隧道屬于線狀工程&#xff0c;有的規模較大&#xff0c;可長達幾公里或數十公里&#xff0c;往往穿越許多不同環境…

選錯方向太致命,華為HCIE數通和云計算到底怎么選?

現在搞HCIE的兄弟越來越多了&#xff0c;但“數通和云計算&#xff0c;到底考哪個&#xff1f;”這問題&#xff0c;依舊讓不少人頭疼。 一個是華為認證的老牌王牌專業——HCIE數通&#xff0c;穩、系統、崗位多&#xff1b; 一個是新趨勢方向&#xff0c;貼合云原生、數字化…

相機基礎常識

相機基礎常識 相機中顏色濾鏡的作用&#x1f3a8; 1. **捕捉彩色圖像**? 最常見的顏色濾鏡陣列是 **拜耳濾鏡&#xff08;Bayer Filter&#xff09;**&#xff1a; &#x1f50d; 2. **實現特定的圖像效果或分析功能**? 常見的濾鏡類型包括&#xff1a; &#x1f6e0;? 3. *…

paddle ocr本地化部署進行文字識別

一、Paddle 簡介 1. 基本概念 Paddle&#xff08;全稱 PaddlePaddle&#xff0c;飛槳&#xff09;是百度開發的 開源深度學習平臺&#xff0c;也是中國首個自主研發、功能豐富、技術領先的工業級深度學習平臺。它覆蓋了深度學習從數據準備、模型訓練、模型部署到預測的全流程…

開源AI大模型等“神秘組合”,如何顛覆零售業數字化轉型?

基于開源AI大模型、AI智能名片與S2B2C商城小程序源碼的零售行業數字化轉型新路徑研究 摘要&#xff1a;在業界將企業數字化轉型劃分為管理數字化、工業數字化和營銷數字化三大部分的背景下&#xff0c;國內大型制造企業在ERP與工業4.0洗禮下正邁向智能型發展道路。而零售行業面…

uniapp+vite+cli模板引入tailwindcss

目前vitecli方式用的都是官方提供的模板&#xff0c;vite版本還是4.14版本&#xff0c;較舊&#xff0c;而tailwindcss已經有了4版本&#xff0c;實際發現引入最新版會報錯&#xff0c;因而繼續使用3.3.5版本 pnpm install tailwindcss3.3.5 uni-helper/vite-plugin-uni-tail…

Golang中的runtime.LockOSThread 和 runtime.UnlockOSThread

在runtime中有runtime.LockOSThread 和 runtime.UnlockOSThread 兩個函數&#xff0c;這兩個函數有什么作用呢&#xff1f;我們看一下標準庫中對它們的解釋。 runtime.LockOSThread // LockOSThread wires the calling goroutine to its current operating system thread. // T…

Ubuntu搭建NFS服務器的方法

0 工具 Ubuntu 18.041 Ubuntu搭建NFS服務器的方法 在Ubuntu下搭建NFS&#xff08;網絡文件系統&#xff09;服務器可以讓我們像訪問本地文件一樣訪問Ubuntu上的文件&#xff0c;例如可以把開發板的根文件系統放到NFS服務器目錄下方便調試。 1.1 安裝nfs-kernel-server&#…

HarmonyOS Next應用分層架構下組件封裝開發實踐

基于鴻蒙應用分層架構的ArkUI組件封裝實踐 在鴻蒙應用開發中&#xff0c;合理利用 ArkUI 組件進行封裝&#xff0c;可以實現代碼復用&#xff0c;提升開發效率。本文將結合鴻蒙應用分層架構的特點&#xff0c;詳細探討幾個典型的 ArkUI 組件封裝場景及其實現方案。 華為鴻蒙應…

JAVA請求vllm的api服務報錯Unsupported upgrade request、 Invalid HTTP request received.

環境&#xff1a; vllm 0.8.5 java 17 Qwen3-32B-FP8 問題描述&#xff1a; JAVA請求vllm的api服務報錯Unsupported upgrade request、 Invalid HTTP request received. WARNING: Unsupported upgrade request. INFO: - "POST /v1/chat/completions HTTP/1.1&…

舊 docker 版本通過 nvkind 搭建虛擬多節點 gpu 集群的坑

踩坑 參考nvkind教程安裝到Setup這一步&#xff0c;由于docker版本較舊&#xff0c;–cdi.enabled 和 config 參數執行不了 手動修改 /etc/docker/daemon.json 配置文件 "features": {"cdi": true}手動修改 /etc/nvidia-container-runtime/config.toml 配…

C++:與7無關的數

【描述】 一個正整數,如果它能被7整除,或者它的十進制表示法中某一位上的數字為7,則稱其為與7相關的數.現求所有小于等于n(n < 100)的與7無關的正整數的平方和. 【輸入】 輸入為一行,正整數n(n < 100) 【輸出】 輸出一行&#xff0c;包含一個整數&#xff0c;即小于等于n…

FPGA:Lattice的FPGA產品線以及器件選型建議

本文將詳細介紹Lattice Semiconductor的FPGA產品線&#xff0c;幫助你了解各系列的特點和適用場景&#xff0c;以便更好地進行選型。Lattice以低功耗、小尺寸和高性能為核心&#xff0c;產品覆蓋低中端市場&#xff0c;廣泛應用于通信、計算、工業、汽車、消費電子、嵌入式視覺…