個人理解的跨域:
1.存在於B/S架構
2.前端請求後端
3.前端和被訪問的服務不在同一個服務器上。比如前端部署在10.27.20.59
而後端部署在10.27.20.60,那麼前端請求後端時候就會出現請求不了。當然這種項目是前後端分離的。
此時就需要解決這種問題——跨域。一般在後端處理即可,以下是兩種個人常用的方式:
- 註解方式
在需要跨域訪問的接口(方法)上加上註解,細粒度配置。springMVC的版本要在4.2或以上版本才支持@CrossOrigin。代碼如下:
@CrossOrigin(origins = {"*"}, methods = {RequestMethod.GET})
其中@CrossOrigin中的2個參數:
origins : 允許可訪問的域列表
maxAge:準備響應前的緩存持續的最大時間(以秒爲單位)。
- 配置類方式
全局控制跨域,代碼如下:
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 CorsConfig {
private CorsConfiguration buildConfig() {
CorsConfiguration corsConfiguration = new CorsConfiguration();
//允許任何域名
corsConfiguration.addAllowedOrigin("*");
//允許任何頭
corsConfiguration.addAllowedHeader("*");
//允許任何方法
corsConfiguration.addAllowedMethod("*");
return corsConfiguration;
}
@Bean
public CorsFilter corsFilter() {
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
//註冊
source.registerCorsConfiguration("/**", buildConfig());
return new CorsFilter(source);
}
}