前端请求后端满足三个条件(同一域名、同一端口、同一协议)下,即可访问,有一个条件不满足就会产生跨域访问问题。
解决方案
1. 在拦截器preHandle中处理添加
response.setHeader("Access-Control-Allow-Origin","*")
2. Spring解决方案:
2.1 注解方式:一般在可以支持跨域访问的Controller层加上
@CrossOrigin(origins = “http://localhost:8888”)//参数默认为“*”支持处理任何域名端口的请求
2.2 全局处理:
@Configuration
public class CorsConfigurer extends WebMvcConfigurerAdapter{
@Override
public void addCorsMappings(CorsRegistry registry){
//配置跨域访问路径,/**代表所有路径
registry.addMapping("/**");
}
}
/** 细粒度控制 **/
@Configuration
public class CorsConfigurer extends WebMvcConfigurerAdapter{
@Override
public void addCorsMappings(CorsRegistry registry){
//配置跨域访问路径
registry.addMapping("/api/**");
//配置请求方
.allowedOrigins("http://localhost:8888")
//请求方法
.allowedMethods("GET", "POST")
//请求当中是否包含cookies信息
.allowCredentials(false)
//预请求缓存时间
.maxAge(3600);
}
}