SpringBoot常用配置类——跨域配置
一、什么是跨域
跨域是指在网页中通过 JavaScript 请求不同域名、协议或端口的资源。由于浏览器出于安全考虑,通常会限制这种请求,称为同源策略(Same-Origin Policy)。
同源策略要求请求的资源与当前页面必须具有相同的协议、域名和端口。
如我们页面当前地址为 http://www.testAAA.com/
,请求地址为http://www.testBBB.com/
,这种情况下就会因为域名不同造成跨域,同理 协议 和 端口 不同也会造成跨域。
如果没有适当的跨域解决方案(如 CORS,Cross-Origin Resource Sharing),浏览器会阻止这个请求,并在控制台中抛出错误,提示这是一个跨域请求被阻止的情况。
二、跨域配置
解决跨域的方法有好几种,这里只说服务器后台解决跨域的方式。
1、局部跨域
在我们需要跨域的方法或类上添加 @CrossOrigin
注解以实现跨域。
@RestController
@CrossOrigin(origins = "*")
public class HelloController {
@RequestMapping("/hello")
public String hello() {
return "hello world";
}
}
2、全局跨域处理
新建配置类,通过实现 WebMvcConfigurer
接口的方式来实现全局的跨域配置。
@Configuration
public class WebConfig implements WebMvcConfigurer {
/**
* 配置跨域支持
* @param registry
*/
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**") //允许的路径,即我们那些接口可以跨域
.allowedOrigins("*") //允许的源
.allowCredentials(true) //是否允许发送凭证
.allowedMethods("GET","POST","PUT","DELETE") //指定允许的 HTTP 方法
.maxAge(3600 * 24); //预检请求有效期
}
参考链接:
什么是跨域?跨域解决方法
SpringBoot---WebMvcConfigurer详解
详解WebMvcConfigurer接口