1、什么情況下會出現跨域問題
通常,在前端工程師的開發過程中,往往在本地機器啟動前端服務, 而調用的后端接口服務是在另外一台機器運行,這時就會出現跨域問題,讓接口無法調通。
而到了測試環境和生產環境,可以使用Nginx去解決這個問題。
這里我們僅考慮開發環境,在不借助Nginx的情況下,解決跨域。
2、解決方案
在SpringBoot工程中,增加跨域配置即可。
3、實現
新增一個跨域配置類 CrossDomainConfig,在其中配置允許跨域訪問的url、請求方式、Header等。代碼如下:
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.cors.CorsConfiguration; import org.springframework.web.cors.UrlBasedCorsConfigurationSource; import org.springframework.web.filter.CorsFilter; @Configuration public class CrossDomainConfig{ public CrossDomainConfig() { } private CorsConfiguration buildConfig() { // 添加cors配置信息 CorsConfiguration corsConfiguration = new CorsConfiguration(); corsConfiguration.addAllowedOrigin("http://localhost:8080"); // * 代表所有url corsConfiguration.addAllowedOrigin("*"); // 設置允許請求的方式 corsConfiguration.addAllowedMethod("*"); // 設置允許的header corsConfiguration.addAllowedHeader("*"); // 設置是否發送cookie信息 corsConfiguration.setAllowCredentials(true); return corsConfiguration; } @Bean public CorsFilter corsFilter() { // 為url添加映射路徑 UrlBasedCorsConfigurationSource crossDomainSource = new UrlBasedCorsConfigurationSource(); crossDomainSource.registerCorsConfiguration("/**", buildConfig()); // 返回重新定義好的配置 return new CorsFilter(crossDomainSource); } }
重啟后台工程,會發現,跨域問題被如此簡單的解決了。