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