SpringBoot實現(xiàn)全局和局部跨域的兩種方式
前言
在如今前后端分離的開發(fā)模式下,跨域是一個非常經(jīng)典的問題,解決的方式也有很多,比如代理服務器,使用JSONP
我之前也寫過一篇解決跨域問題的文章,感興趣的可以參考:解決Vue前后端跨域問題的多種方式
上面兩種解決跨域的辦法都是在前端角度的,這次站在后端角度,從全局和局部兩個方面解決跨域問題
什么是跨域
所謂的跨域請求就是指:當前發(fā)起請求的域與該請求指向的資源所在的域不一樣。這里的域指的是這樣的一個概念:我們認為若協(xié)議 + 域名 + 端口號均相同,那么就是同域。
解決跨域
后端解決跨域,主要借助cors
局部解決(使用注解)
可以使用注解:@CrossOrigin
該注解開啟之后,就可以解決跨域問題,它可以加在controller中,表面這個controller中的全部方法都經(jīng)過跨域處理,也可以單獨加在某個方法上,表示只有這一個方法經(jīng)過跨域處理
但是它的默認值為*,也就是默認全部放行,理論來說不太安全
如果項目里面又多個controller或者多個方法,使用注解就會顯得非常雞肋,如果一個一個加太麻煩了,這時候就可以使用全局注解了
全局解決
原理:創(chuàng)建一個配置類,開啟跨域注冊,并使用@Configuration注解把這個類當作一個配置注入到項目中
我們可以自由配置請求方式,以及域名權限,請求時間,更加細度的去控制跨域范圍
package com.wyh.config; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.CorsRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; /** * @Description: 解決全局跨域 * @Author: 魏一鶴 * @Date: 2022-11-30 22:44 **/ @Configuration public class CorsMapping implements WebMvcConfigurer { @Override /** * 重新跨域支持方法 * CorsRegistry 開啟跨域注冊 */ public void addCorsMappings(CorsRegistry registry) { //addMapping 添加可跨域的請求地址 registry.addMapping("/**") //設置跨域 域名權限 規(guī)定由某一個指定的域名+端口能訪問跨域項目 .allowedOrigins("*") //是否開啟cookie跨域 .allowCredentials(false) //規(guī)定能夠跨域訪問的方法類型 .allowedMethods("GET","POST","DELETE","PUT","OPTIONS") //添加驗證頭信息 token //.allowedHeaders() //預檢請求存活時間 在此期間不再次發(fā)送預檢請求 .maxAge(3600); } }
注意:千萬不要忘了@Configuration注解,不然配置是無效的?。?!
總結
以上就是SpringBoot解決全局和局部跨域問題的兩種方式了,根據(jù)自己的需求靈活選擇即可!更多相關SpringBoot 全局和局部跨域內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Vue編寫可顯示周和月模式的日歷 Vue自定義日歷內(nèi)容的顯示
這篇文章主要為大家詳細介紹了Vue編寫可顯示周和月模式的日歷,Vue自定義日歷內(nèi)容的顯示,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-06-06Vue通過URL傳參如何控制全局console.log的開關詳解
這篇文章主要給大家介紹了關于Vue根據(jù)URL傳參如何控制全局console.log開關的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起看看吧。2017-12-12vue實現(xiàn)修改標簽中的內(nèi)容:id class style
這篇文章主要介紹了vue實現(xiàn)修改標簽中的內(nèi)容:id class style,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-07-07