背景
现在做的很多项目都是前后端分离的,这就引出一个很常见的问题,我们的页面和接口是在不同域名下的,当我们通过ajax访问后端接口的时候就会出现跨域问题,这种问题我们怎么解决呢?一般来说就是cors和jsonp这两种方案。Spring简化了cors的配置,接下来我们来看一下它提供的cors。
跨域问题描述
Web开发经常会遇到跨域问题,解决方案有:jsonp,iframe,CORS等等。
CORS 与 JSONP 相比:
1、 JSONP 只能实现 GET 请求,而 CORS 支持所有类型的 HTTP 请求。
2、 使用 CORS,开发者可以使用普通的 XMLHttpRequest 发起请求和获得数据,比起 JSONP 有更好的 错误处理。
3、 JSONP 主要被老的浏览器支持,它们往往不支持 CORS,而绝大多数现代浏览器都已经支持了 CORS。
WebMvcConfigurer对象
我们可以初始化一个WebMvcConfigurer对象来配置我们的cors映射。
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
@Configuration
public class CorsCongiguration {
@Bean
public WebMvcConfigurer corsConfigurer() {
return new WebMvcConfigurerAdapter() {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping( "/api/**" ); // 允许所有第三方域名访问该接口
// .allowedOrigins("http://domain2.com")//指定来源域名
// .allowedMethods("PUT", "DELETE")
// .allowedHeaders("header1", "header2", "header3")
// .exposedHeaders("header1", "header2")
// .allowCredentials(false).maxAge(3600);
}
};
}
}
|
继承WebMvcConfigurerAdapter
这种方式跟上面的方式很类似
?
1
2
3
4
5
6
7
8
9
|
@Configuration
@EnableWebMvc
public class CorsConfiguration_2 extends WebMvcConfigurerAdapter {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping( "/api/**" );
}
}
|
corsFilter
这种方式现在很少用
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
@Component
@EnableWebMvc
public class CorsFilterCongiguration extends CorsFilter {
public CorsFilterCongiguration(CorsConfigurationSource configSource) {
super (configSource);
}
@Bean
public FilterRegistrationBean corsFilter() {
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
CorsConfiguration config = new CorsConfiguration();
config.setAllowCredentials( true );
config.addAllowedOrigin( "*" );
// config.addAllowedOrigin("http://domain1.com");
config.addAllowedHeader( "*" );
config.addAllowedMethod( "*" );
source.registerCorsConfiguration( "/api/**" , config);
FilterRegistrationBean bean = new FilterRegistrationBean( new CorsFilter(source));
bean.setOrder( 0 ); // 必须在所有Filter之前
return bean;
}
}
|
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持快网idc。
原文链接:https://my.oschina.net/huaxian8812/blog/1618329
相关文章
猜你喜欢
- 个人服务器网站搭建:如何选择合适的服务器提供商? 2025-06-10
- ASP.NET自助建站系统中如何实现多语言支持? 2025-06-10
- 64M VPS建站:如何选择最适合的网站建设平台? 2025-06-10
- ASP.NET本地开发时常见的配置错误及解决方法? 2025-06-10
- ASP.NET自助建站系统的数据库备份与恢复操作指南 2025-06-10
TA的动态
- 2025-07-10 怎样使用阿里云的安全工具进行服务器漏洞扫描和修复?
- 2025-07-10 怎样使用命令行工具优化Linux云服务器的Ping性能?
- 2025-07-10 怎样使用Xshell连接华为云服务器,实现高效远程管理?
- 2025-07-10 怎样利用云服务器D盘搭建稳定、高效的网站托管环境?
- 2025-07-10 怎样使用阿里云的安全组功能来增强服务器防火墙的安全性?
快网idc优惠网
QQ交流群
您的支持,是我们最大的动力!
热门文章
-
网站服务器关闭解决方案与临时维护指南:数据迁移及应急处理优化
2025-05-25 91 -
2025-05-27 88
-
2025-05-29 80
-
2025-05-27 37
-
2025-05-29 22
热门评论