springboot跨域处理
一、什么是跨域(cors)
跨域(cors)是指不同域名之间的互相访问,本地服务器去访问另一个服务器的资源,这个时候就会出现跨域访问的问题,是由浏览器对于javascript所定义的安全限制策
同域:
- 同一协议, 如http或https
- 同一ip地址, 如192.168.1.2
- 同一端口, 如8080
以上三个条件中有一个条件不同就会产生 跨域问题
二、跨域解决方案
1.前端解决方案
1.1 使用 jsonp 来支持跨域的请求
1.2 使用nodejs服务器做为服务代理
2.后端解决方案
这里有三种配置方式
2.1 配置过滤器
@configuration
public class globalcorsconfig {
@bean
public corsfilter corsfilter() {
corsconfiguration config = new corsconfiguration();
config.addallowedorigin("*");
config.setallowcredentials(true);
config.addallowedmethod("*");
config.addallowedheader("*");
config.addexposedheader("*");
urlbasedcorsconfigurationsource configsource = new urlbasedcorsconfigurationsource();
configsource.registercorsconfiguration("/**", config);
return new corsfilter(configsource);
}
}
2.2 配置拦截器
@configuration
public class myconfiguration extends webmvcconfigureradapter {
@override
public void addcorsmappings(corsregistry registry) {
registry.addmapping("/**")
.allowedmethods(httpmethod.get.name(),httpmethod.post.name(),httpmethod.put.name(),httpmethod.patch.name(),httpmethod.delete.name())//允许访问的类型
.allowcredentials(true)
.allowedheaders("*")
.allowedorigins("*")
.maxage(3600);
}
}
2.3单个请求跨域请求
@requestmapping("/hello")
@crossorigin("http://localhost:8080")
public string hello( ){
return "hello world";
}
另:本人刚开始写博客,小白,想用博客记录问题点,欢迎大佬们评论不足的地方,多交流