现代浏览器出于安全的考虑,使用 XMLHttpRequest对象发起 HTTP请求时必须遵守同源策略,否则就是跨域的HTTP请求,默认情况下是被禁止的。IP(域名)不同、或者端口不同,都会造成跨域问题。
在实际项目中,前端与后台经常会出现不在同一服务器的情况。并且在开发测试不同环境也会出现在不同服务器的情况,这种情况下,浏览器就会出于安全的考虑禁止访问,这种现象就叫做跨域。
在 Spring-Boot 中配置 CORS 跨域非常简单,在 WebMvcConfigurerAdapter
中直接重写 addCorsMappings
方法即可,具体如下
@Configuration
public class MyWebMvcConfigurerAdapter extends WebMvcConfigurerAdapter {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedHeaders("*")
.allowedMethods("*")
.allowedOrigins("*");
}
}
这里匹配了所有的URL,允许所有的外域发起跨域请求,允许外域发起请求任意HTTP Method,允许跨域请求包含任意的头信息。
response 应该也需要设置,因为我发现请求收到了,但是前端收不到数据
response 应该也需要设置,因为我发现请求收到了,但是前端收不到数据