SpringBoot中的跨域详解
什么是跨域?
在浏览器上当前访问的网站,向另一个网站发送请求,用于获取数据的过程就是跨域请求。
跨域,是浏览器的同源策略决定的,是一个重要的浏览器安全策略
用于限制一个 origin 的文档或者它加载的脚本与另一个源的资源进行交互,它能够帮助阻隔恶意文档,减少可能被攻击的媒介,可以使用 CORS 配置解除这个限制。
什么是同源策略?
同源策略/SOP(Same origin policy)是一种约定,由Netscape公司1995年引入浏览器,它是浏览器最核心也最基本的安全功能
如果缺少了同源策略,浏览器很容易受到XSS、CSFR等攻击
同源策略能够限制以下行为:
- Cookie、LocalStorage 和 IndexDB 无法读取
- DOM 和 JS对象无法获得
- AJAX 请求不能发送
- 注意:跨域限制是浏览器的机制,如果直接在服务端请求,是不会触发跨域限制的。
同源/不同源?

跨域解决方案:
- 通过jsonp跨域
- document.domain + iframe跨域
- location.hash + iframe
- window.name + iframe跨域
- postMessage跨域
- 跨域资源共享(CORS)
- nginx代理跨域
- nodejs中间件代理跨域
- WebSocket协议跨域
什么是跨域资源共享(CORS)?
CORS是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing)。
它允许浏览器向跨源服务器,发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制。
普通跨域请求,只服务端设置Access-Control-Allow-Origin即可,前端无须设置;若要带cookie请求,前后端都需要设置。
目前,所有浏览器都支持该功能,CORS也已经成为主流的跨域解决方案。
NGINX代理跨域的原理
NGINX实现代理跨域的原理,实际就是把WEB项目和后端项目放到一个域中
这样就不存在跨域问题了,NGINX根据请求地址去请求不同服务器,也就是真正干活的服务器上的资源。
到此这篇关于SpringBoot中的跨域详解的文章就介绍到这了,更多相关SpringBoot跨域内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
为什么Spring和IDEA都不推荐使用 @Autowired 注解
本文主要介绍了为什么Spring和IDEA都不推荐使用 @Autowired 注解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2022-04-04
maven在settings.xml和pom.xml中指定jdk版本编译的方法
在开发Java应用时,通常需要指定要使用的Java版本,下面这篇文章主要给大家介绍了关于maven在settings.xm和pom.xml中指定jdk版本编译的方法,文中通过代码介绍的非常详细,需要的朋友可以参考下2024-05-05
SpringBoot+WebMagic+MyBaties实现爬虫和数据入库的示例
WebMagic是一个开源爬虫框架,本项目通过在SpringBoot项目中使用WebMagic去抓取数据,最后使用MyBatis将数据入库。具有一定的参考价值,感兴趣的小伙伴们可以参考一下2021-10-10


最新评论