个人理解的跨域:
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);
}
}