Springboot解决跨域问题

2年前 (2022) 程序员胖胖胖虎阿
324 0 0

说明

什么是跨域?由于浏览器的安全性限制,不允许前端页面访问协议不同域名不同端口号不同的http接口,例如我本地创建一个html,里面写一个ajax请求访问我服务器springboot应用提供的接口:192.168.56.123:8080/getUserInfo
则会出报 No 'Access-Control-Allow-Origin' header is present on the requested resource. 错误。
此类问题我们一般是在接口提供方,即服务端解决。

全局配置

在springboot中可以采用多种方式解决跨域问题,例如:可以在类或方法上添加@CrossOrigin 注解。还有一种就是全局配置,全局配置需要添加自定义类实现 WebMvcConfigurer 接口,然后实现接口中的 addCorsMappings 方法。下面是一个简单的样例代码:

  • addMapping:表示对哪种格式的请求路径进行跨域处理。
  • allowedHeaders:表示允许的请求头,默认允许所有的请求头信息。
  • allowedMethods:表示允许的请求方法,默认是 GET、POST 和 HEAD。这里配置为 * 表示支持所有的请求方法。
  • maxAge:表示探测请求的有效期
  • allowedOrigins 表示支持的域

采用如下配置,直接让所有请求、所有域都支持跨域:

@Configuration
public class MyWebMvcConfig implements WebMvcConfigurer {
 
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedHeaders("*")
                .allowedMethods("*")
                .maxAge(1800)
                .allowedOrigins("*");
    }
}

版权声明:程序员胖胖胖虎阿 发表于 2022年11月22日 上午10:48。
转载请注明:Springboot解决跨域问题 | 胖虎的工具箱-编程导航

相关文章

暂无评论

暂无评论...