1狸演、什么情況下會出現(xiàn)跨域問題
通常,在前端工程師的開發(fā)過程中滑黔,往往在本地機(jī)器啟動前端服務(wù)笆包, 而調(diào)用的后端接口服務(wù)是在另外一臺機(jī)器運(yùn)行,這時就會出現(xiàn)跨域問題略荡,讓接口無法調(diào)通庵佣。
而到了測試環(huán)境和生產(chǎn)環(huán)境,可以使用Nginx去解決這個問題汛兜。
這里我們僅考慮開發(fā)環(huán)境巴粪,在不借助Nginx的情況下,解決跨域。
2验毡、解決方案
在SpringBoot工程中衡创,增加跨域配置即可。
3晶通、實(shí)現(xiàn)
新增一個跨域配置類 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("*");
// 設(shè)置允許請求的方式
corsConfiguration.addAllowedMethod("*");
// 設(shè)置允許的header
corsConfiguration.addAllowedHeader("*");
// 設(shè)置是否發(fā)送cookie信息
corsConfiguration.setAllowCredentials(true);
return corsConfiguration;
}
@Bean
public CorsFilter corsFilter() {
// 為url添加映射路徑
UrlBasedCorsConfigurationSource crossDomainSource = new UrlBasedCorsConfigurationSource();
crossDomainSource.registerCorsConfiguration("/**", buildConfig());
// 返回重新定義好的配置
return new CorsFilter(crossDomainSource);
}
}
重啟后臺工程,會發(fā)現(xiàn)喉脖,跨域問題被如此簡單的解決了椰苟。