關(guān)于springboot的跨域配置問題的解決方案
傳統(tǒng)跨域是springboot中CorsRegistry添加添加處理的CorsMapping,這種跨域處理可以處理controller的請求。
@Configuration public class CorsConfig implements WebMvcConfigurer { static final String[] ORIGINS = new String[] { "GET", "POST", "PUT", "DELETE" }; @Override public void addCorsMappings(CorsRegistry registry) { // 所有的當(dāng)前站點的請求地址,都支持跨域訪問。 registry.addMapping("/**") // 所有的外部域都可跨域訪問 .allowedOrigins("*") // 是否支持跨域用戶憑證 .allowCredentials(true) // 當(dāng)前站點支持的跨域請求類型是什么 .allowedMethods(ORIGINS) // 超時時長設(shè)置為1小時,時間單位是秒。 .maxAge(3600); } }
但如果遇到spring boot集成spring security的時候,登錄時處理是在filter中的,傳統(tǒng)的跨域沒有辦法處理,這時候我們要采用一種新的實現(xiàn)方案:基于filter的跨域?qū)崿F(xiàn)。
基于filter實現(xiàn)可以處理filter中的跨域問題,這里原理很簡單,需要注意是要設(shè)置CorsFilter的優(yōu)先級:Ordered.HIGHEST_PRECEDENCE(加載到過濾器鏈最前面?。。。?/p>
@Configuration public class CorsConfig { private CorsConfiguration buildConfig() { CorsConfiguration corsConfiguration = new CorsConfiguration(); corsConfiguration.addAllowedOrigin("*"); corsConfiguration.addAllowedHeader("*"); corsConfiguration.addAllowedMethod("*"); corsConfiguration.addExposedHeader("*"); return corsConfiguration; } @Bean public FilterRegistrationBean<CorsFilter> corsFilter() { UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); // 對接口配置跨域設(shè)置 source.registerCorsConfiguration("/**", buildConfig()); //有多個filter時此處設(shè)置改CorsFilter的優(yōu)先執(zhí)行順序 FilterRegistrationBean<CorsFilter> bean = new FilterRegistrationBean<>(new CorsFilter(source)); bean.setOrder(Ordered.HIGHEST_PRECEDENCE); return bean; } }
經(jīng)過測試,這種處理方法可以輕松應(yīng)對springboot的跨域問題。
到此這篇關(guān)于關(guān)于springboot的跨域配置問題的解決方案的文章就介紹到這了,更多相關(guān)springboot跨域配置內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
maven無法依賴spring-cloud-stater-zipkin的解決方案
這篇文章主要介紹了maven無法依賴spring-cloud-stater-zipkin如何解決,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-05-05解決MyEclipse出現(xiàn)the user operation is waiting的問題
今天做項目的時候每次修改代碼保存后都會跳出一個框框,然后就有兩個進度條,上面寫the user operation is wating...小編去網(wǎng)上查了查解決了這個問題,下面跟大家分享一下。2018-04-04JAVA實現(xiàn)社會統(tǒng)一信用代碼校驗的方法
這篇文章主要介紹了JAVA實現(xiàn)社會統(tǒng)一信用代碼校驗的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07MyBatis-Plus中靜態(tài)工具Db的多種用法及實例分析
本文將詳細(xì)講解MyBatis-Plus中靜態(tài)工具Db的各種用法,并結(jié)合具體案例進行演示和說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2025-03-03