九、Spring Boot 优雅的实现CORS跨域

本文介绍了Spring Boot中三种实现CORS跨域的方法:@CrossOrigin注解、重写WebMvcConfigurer的addCorsMappings方法以及使用Filter。通过详细步骤和代码示例,展示了如何全局支持和特定接口支持跨域。最后,作者分享了自己的Java开发经验并提供了学习资源。
摘要由CSDN通过智能技术生成

url:url2,

data: “/rAIeKeSBG1LV XoIq82/O”,

success:function(data){

alert(“success”);

}

})

});

});

接下来我们来学习下在springboot 项目中怎么实现支持跨域。

@CrossOrigin 注解

==============================================================================

这种方法是springboot 自带的,使用比较简单,在需要支持的跨域的接口上加上这个注解就可以了。

比如在我们项目的demo 接口加上注解.就表示这个接口支持跨域,其中origins = “*”

表示所有的地址都可以访问这个接口,也可以写具体的地址,表示只有这个地址访问才能访问到接口。

@CrossOrigin(origins = “*”)

file

测试


我们也来测试一下,启动项目后,在浏览器上运行我们的测试的html文件。

发现localhost:9090/zlflovemm/ 是可以访问的。

file

说明跨域是支持的。大伙可以先将注解去掉测试一下,然后加上注解测试一下进行对比。

这种方式虽然很简单,但是缺点也不小,需要跨域的接口都需要加上这个注解,这对前后端分离的项目是不友好的,所以这种方式基本上用的很少。

重写WebMvcConfigurer的addCorsMappings 方法。

=====================================================================================================

这种方法在实际项目中也用的比较多,是一种全局支持跨域的方法。

我们创建一个CorsConfig 类。内容如下:

@Configuration

public class CorsConfig implements WebMvcConfigurer {

@Override

public void addCorsMappings(CorsRegistry registry) {

registry.addMapping(“/**”)//项目中的所有接口都支持跨域

.allowedOrigins(“*”)//所有地址都可以访问,也可以配置具体地址

.allowCredentials(true)

.allowedMethods(“*”)//“GET”, “HEAD”, “POST”, “PUT”, “DELETE”, “OPTIONS”

.maxAge(3600);// 跨域允许时间

}

}

加上@Configuration 表示是配置类,在项目启动的时候会加载。实现WebMvcConfigurer 接口并重写addCorsMappings 方法。代码比较简单,也有注释。

测试的话,大家可以自行测试,我测试都是通过的和上面一样测试就可以,这里就不占篇幅了。

Filter

=====================================================================

除了上面方法外,也可以使用过滤器。我们创建一个CorsFilter 类,内容如下:

@Slf4j

@Component

public class CorsFilter implements Filter {

@Override

public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {

HttpServletResponse response = (HttpServletResponse)servletResponse;

response.setHeader(“Access-Control-Allow-Origin”, “*”);

response.setHeader(“Access-Control-Allow-Methods”, “POST, PUT, GET, OPTIONS, DELETE”);

response.setHeader(“Access-Control-Max-Age”, “3600”);

response.setHeader(“Access-Control-Allow-Headers”, “Origin, X-Requested-With, Content-Type, Accept, client_id, uuid, Authorization”);

response.setHeader(“Cache-Control”, “no-cache, no-store, must-revalidate”);

response.setHeader(“Pragma”, “no-cache”);

filterChain.doFilter(servletRequest,response);

}

}

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

最后

由于篇幅有限,这里就不一一罗列了,20道常见面试题(含答案)+21条MySQL性能调优经验小编已整理成Word文档或PDF文档

MySQL全家桶笔记

还有更多面试复习笔记分享如下

Java架构专题面试复习

《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门即可获取!
[外链图片转存中…(img-qV7XgMeR-1712272887838)]

还有更多面试复习笔记分享如下

[外链图片转存中…(img-ygX1ZepK-1712272887838)]

《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门即可获取!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值