Spring Boot 跨域访问
出于安全的考虑,浏览器会禁止 Ajax
访问不同域的地址,在现如今微服务横行的年代,跨域访问是非常常见的。W3C 的 CORS (Cross-origin-resource-sharing
) 规范中也已经允许跨域访问, 并被主流浏览器所支持,它们包括:
- Chrome 3+;
- Firefox 3.5+;
- Opera 12+;
- Safari 4+;
- IE 8+;
如何在 Spring Boot 中配置跨域访问呢?
Spring Boot 提供了对 CORS 的支持,您可以实现 addCorsMappings
接口来添加规则来允许跨域访问:
package site.exception.config; import org.springframework.web.servlet.config.annotation.CorsRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; /** * @time 下午8:36 * @discription **/ public class CORSConfig extends WebMvcConfigurerAdapter { @Override public void addCorsMappings(CorsRegistry registry) { // 允许所有跨域访问 registry.addMapping("/**"); } }
/**
允许所有域名都能够跨域访问,下面看看更为精细的控制:
package site.exception.config; import org.springframework.web.servlet.config.annotation.CorsRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; /** * @time 下午8:36 * @discription **/ public class CORSConfig extends WebMvcConfigurerAdapter { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/api/**") .allowedOrigins("http://www.baidu.com") .allowedMethods("POST", "GET"); } }
通过上面的配置,只允许来自 www.exception.site 的跨域访问,并且限定只能对 /api
下的所有接口进行跨域访问,同时只能访问 POST
和 GET
方法。
跨域访问的原理
跨域访问的原理其实很简单,当发起跨域请求的时候,浏览器会对请求域返回的 HTTP
头进行检查,如果 Access-Control-Allow-Origin
包含了自身域,则表示允许访问,否者报错。这也正是上述代码中 allowedOrigins()
方法的作用。
本文来自博客园,作者:深码青年,转载请注明原文链接:https://www.cnblogs.com/shenMaQN/p/17759771.html
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战