Spring Boot 2中對於CORS跨域訪問的快速支持


原文:https://www.jianshu.com/p/840b4f83c3b5

 

 

目前的程序開發,大部分都采用前后台分離。這樣一來,就都會碰到跨域資源共享CORS的問題。Spring Boot 2 對此提供了很好的解決方法。

更多CORS介紹,請看這里: CORS介紹

1、注解實現

在Spring Boot 2中,提供了注解的方式來對CORS跨域訪問進行支持。

1.1 在方法上注解

可以將@CrossOrigin注解在方法上。這樣該方法可以被跨域訪問。


 
在方法上標注

1.2 在Controller上注解

也可以對整個Controller上注解。這樣整個Controller下的所有方法都支持跨域訪問。


 
在Controller上標注

1.3 同時注解

二者同時注解也可以,此時取的是二者的組合。
如下所示,Controller可以被所有來源訪問,但/user只能被http://localhost:9000訪問。

 
組合注解

1.4 注解細項配置

默認情況下,@CrossOrigin允許所有的來源,所有的Header,@RequestMapping注解中指定的HTTP方法被跨域訪問,並支持最大30分鍾的maxAge。 您可以覆蓋這些注解屬性值,以進行個性化設置:

屬性 說明
origins 允許的來源列表。響應信息會放在HTTP協議Header的Access-Control-Allow-Origin中
-*- 所有的來源都被允許
--- 如果未定義,則允許所有來源)
allowedHeaders 實際請求期間可以使用的請求頭列表。該值用於預檢的響應Header中的Access-Control-Allow-Headers信息。
-*- 意味着允許客戶端請求的所有頭信息。
--- 如果未定義,則允許所有請求的headers。
methods 服務器端支持的HTTP請求方法列表。
-*- 所有方法。
--- 如果未定義,則使用由RequestMapping注解定義的方法。
exposedHeaders 瀏覽器允許客戶端訪問的響應頭列表。 在實際響應報頭Access-Control-Expose-Headers中設置值。
–-- 如果未定義,則使用空的暴露標題列表。
allowCredentials 它確定瀏覽器是否應該包含與請求相關的任何cookie。
-false- 不允許包含Cookies 。
–true– 允許攜帶Cookies。
–""- (空字符串) 意味着未定義。
–-- 如果未定義,則允許所有憑據。
maxAge 預響應緩存持續時間的最大時間(以秒為單位)。 該值在Header的Access-Control-Max-Age中設置。
–-- 如果未定義, 最大時間設置為1800秒(30分鍾)

2、全局配置

在Spring Boot 2中,通過復寫WebMvcConfigurer中的addCorsMapping方法,可以達到全局配置的目標。

@Configuration public class CorsConfiguration implements WebMvcConfigurer { @Override public void addCorsMappings(CorsRegistry corsRegistry) { // 允許跨域訪問資源定義: /api/ 所有資源 corsRegistry.addMapping("/api/**") // 只允許本地的9000端口訪問 .allowedOrigins("http://localhost:9000", "http://127.0.0.1:9000") // 允許發送Cookie .allowCredentials(true) // 允許所有方法 .allowedMethods("GET", "POST", "PUT", "DELETE", "HEAD"); } }


作者:Jackeroo
鏈接:https://www.jianshu.com/p/840b4f83c3b5
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯系作者獲得授權並注明出處。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM