SpringBoot實現(xiàn)全局和局部跨域的兩種方式
前言
在如今前后端分離的開發(fā)模式下,跨域是一個非常經典的問題,解決的方式也有很多,比如代理服務器,使用JSONP
我之前也寫過一篇解決跨域問題的文章,感興趣的可以參考:解決Vue前后端跨域問題的多種方式
上面兩種解決跨域的辦法都是在前端角度的,這次站在后端角度,從全局和局部兩個方面解決跨域問題
什么是跨域
所謂的跨域請求就是指:當前發(fā)起請求的域與該請求指向的資源所在的域不一樣。這里的域指的是這樣的一個概念:我們認為若協(xié)議 + 域名 + 端口號均相同,那么就是同域。
解決跨域
后端解決跨域,主要借助cors
局部解決(使用注解)
可以使用注解:@CrossOrigin
該注解開啟之后,就可以解決跨域問題,它可以加在controller中,表面這個controller中的全部方法都經過跨域處理,也可以單獨加在某個方法上,表示只有這一個方法經過跨域處理

但是它的默認值為*,也就是默認全部放行,理論來說不太安全

如果項目里面又多個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注解,不然配置是無效的?。。?/p>

總結
以上就是SpringBoot解決全局和局部跨域問題的兩種方式了,根據(jù)自己的需求靈活選擇即可!更多相關SpringBoot 全局和局部跨域內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
SpringBoot+Vue項目線上買菜系統(tǒng)源碼展示
本線上買菜系統(tǒng)采用的數(shù)據(jù)庫是Mysql,使用springboot框架開發(fā)。在設計過程中,充分保證了系統(tǒng)代碼的良好可讀性、實用性、易擴展性、通用性、便于后期維護、操作方便以及頁面簡潔等特點,需要的朋友可以參考下2022-08-08
Vue淺析axios二次封裝與節(jié)流及防抖的實現(xiàn)
axios是基于promise的HTTP庫,可以使用在瀏覽器和node.js中,它不是vue的第三方插件,vue-axios是axios集成到Vue.js的小包裝器,可以像插件一樣安裝使用:Vue.use(VueAxios,?axios),本文給大家介紹axios的二次封裝和節(jié)流與防抖2022-08-08

