SpringBoot處理跨域請(qǐng)求的四種方法
1. 使用@CrossOrigin注解
Spring Boot提供了一個(gè)注解@CrossOrigin,可以直接應(yīng)用于控制器類(lèi)或方法上,以聲明允許跨域請(qǐng)求的配置。例如:
@RestController
@CrossOrigin(origins = "http://localhost:3000")
public class MyController {
// Controller methods
}
這種方法簡(jiǎn)單明了,但可能不夠靈活,特別是當(dāng)需要配置更多的跨域選項(xiàng)時(shí)。
2. 使用WebMvcConfigurer配置
通過(guò)實(shí)現(xiàn)WebMvcConfigurer接口,可以進(jìn)行更細(xì)粒度的跨域配置。下面是一個(gè)例子:
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/api/**")
.allowedOrigins("http://localhost:3000")
.allowedMethods("GET", "POST", "PUT", "DELETE")
.allowCredentials(true);
}
}
這種方式允許更多的自定義配置,適用于復(fù)雜的跨域場(chǎng)景。
3. 使用Filter配置
通過(guò)自定義Filter來(lái)處理跨域請(qǐng)求也是一種有效的方式。創(chuàng)建一個(gè)CorsFilter類(lèi),實(shí)現(xiàn)Filter接口:
@Component
public class CorsFilter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
HttpServletResponse httpResponse = (HttpServletResponse) response;
httpResponse.setHeader("Access-Control-Allow-Origin", "http://localhost:3000");
httpResponse.setHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE");
httpResponse.setHeader("Access-Control-Allow-Credentials", "true");
chain.doFilter(request, response);
}
}
然后,將該Filter注冊(cè)到Spring Boot應(yīng)用中。
4. 使用全局配置
在application.properties或application.yml中添加全局配置項(xiàng):
spring.mvc.cors.allowed-origins=http://localhost:3000 spring.mvc.cors.allowed-methods=GET,POST,PUT,DELETE spring.mvc.cors.allow-credentials=true
這種方式不需要編寫(xiě)額外的Java代碼,適用于全局的跨域配置。
結(jié)束語(yǔ)
Spring Boot提供了多種方式來(lái)實(shí)現(xiàn)跨域請(qǐng)求,開(kāi)發(fā)者可以根據(jù)具體需求選擇適合的方法。在配置時(shí),要確保不僅考慮安全性,還要兼顧應(yīng)用的靈活性和性能。希望本文對(duì)你理解Spring Boot中跨域配置提供了一些幫助。
以上就是SpringBoot處理跨域請(qǐng)求的常用方法總結(jié)的詳細(xì)內(nèi)容,更多關(guān)于SpringBoot處理跨域請(qǐng)求的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Java Buffer緩沖區(qū)操作與內(nèi)存管理最佳實(shí)踐
Java NIO的Buffer是數(shù)據(jù)容器,管理堆/堆外內(nèi)存,具備position、limit、capacity三大屬性,支持讀寫(xiě)切換,直接緩沖區(qū)I/O快但創(chuàng)建較慢,非直接緩沖區(qū)更易管理,根據(jù)場(chǎng)景選擇合適類(lèi)型以?xún)?yōu)化性能,本文給大家介紹Java Buffer緩沖區(qū)操作與內(nèi)存管理最佳實(shí)踐,感興趣的朋友一起看看吧2025-09-09
SpringMVC架構(gòu)的項(xiàng)目 js,css等靜態(tài)文件導(dǎo)入有問(wèn)題的解決方法
下面小編就為大家?guī)?lái)一篇SpringMVC架構(gòu)的項(xiàng)目 js,css等靜態(tài)文件導(dǎo)入有問(wèn)題的解決方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-10-10
springmvc下實(shí)現(xiàn)登錄驗(yàn)證碼功能示例
本篇文章主要介紹了springmvc下實(shí)現(xiàn)登錄驗(yàn)證碼功能示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-02-02
SpringBoot通過(guò)URL地址獲取文件的多種方式
本文介紹了多種在SpringBoot中通過(guò)URL地址獲取文件的方法,包括Java原生、RestTemplate、WebClient等,并提供了詳細(xì)的步驟和示例代碼,同時(shí),還討論了異常處理、資源清理、并發(fā)控制等優(yōu)化建議,需要的朋友可以參考下2026-01-01
springboot中@component注解的使用實(shí)例
這篇文章主要介紹了springboot中@component注解的使用實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03
通過(guò)Java 程序獲取Word中指定圖片的坐標(biāo)位置
本文介紹通過(guò)Java程序獲取Word文檔中指定圖片的坐標(biāo)位置,程序運(yùn)行環(huán)境是jdk1.8開(kāi)發(fā)環(huán)境idea,通過(guò)java程序代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧2021-05-05
Spring Security基于散列加密方案實(shí)現(xiàn)自動(dòng)登錄功能
為了提高項(xiàng)目的用戶(hù)體驗(yàn),我們可以在項(xiàng)目中添加自動(dòng)登錄功能,當(dāng)然也要給用戶(hù)提供退出登錄的功能。接下來(lái)學(xué)習(xí)下Spring Security基于散列加密方案實(shí)現(xiàn)自動(dòng)登錄功能,一起看看吧2021-09-09
Java中時(shí)間處理API全解析(從JDK7到JDK8)
在 Java 開(kāi)發(fā)領(lǐng)域,時(shí)間處理是一項(xiàng)極為常見(jiàn)且關(guān)鍵的需求,本文圍繞 JDK7 與 JDK8 中的時(shí)間處理類(lèi),詳細(xì)梳理時(shí)間類(lèi)的使用與演進(jìn),希望對(duì)大家有所幫助2025-07-07

