SpringBoot中的跨域详解

 更新时间:2023年08月04日 08:58:57   作者:cloneme01  
这篇文章主要介绍了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跨域内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SpringBoot浅析安全管理之基于数据库认证

    SpringBoot浅析安全管理之基于数据库认证

    在真实的项目中,用户的基本信息以及角色等都存储在数据库中,因此需要从数据库中获取数据进行认证和授权
    2022-08-08
  • Java对象数组定义与用法详解

    Java对象数组定义与用法详解

    这篇文章主要介绍了Java对象数组定义与用法,结合实例形式分析了java对象数组的概念、功能、定义与使用方法,需要的朋友可以参考下
    2019-08-08
  • Java web实现简单注册功能

    Java web实现简单注册功能

    这篇文章主要为大家详细介绍了Java web实现简单注册功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • 为什么Spring和IDEA都不推荐使用 @Autowired 注解

    为什么Spring和IDEA都不推荐使用 @Autowired 注解

    本文主要介绍了为什么Spring和IDEA都不推荐使用 @Autowired 注解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-04-04
  • JavaEE线程安全定时器模式任务

    JavaEE线程安全定时器模式任务

    这篇文章主要介绍了JavaEE线程安全定时器模式任务,定时器模式像是一个闹钟定时,在一定时间之后被唤醒并执行某个之前设定好的任务,感兴趣的小伙伴可以参考一下
    2022-06-06
  • maven在settings.xml和pom.xml中指定jdk版本编译的方法

    maven在settings.xml和pom.xml中指定jdk版本编译的方法

    在开发Java应用时,通常需要指定要使用的Java版本,下面这篇文章主要给大家介绍了关于maven在settings.xm和pom.xml中指定jdk版本编译的方法,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-05-05
  • Mybatis动态SQL foreach标签用法实例

    Mybatis动态SQL foreach标签用法实例

    这篇文章主要介绍了Mybatis动态SQL foreach标签用法实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • SpringBoot+WebMagic+MyBaties实现爬虫和数据入库的示例

    SpringBoot+WebMagic+MyBaties实现爬虫和数据入库的示例

    WebMagic是一个开源爬虫框架,本项目通过在SpringBoot项目中使用WebMagic去抓取数据,最后使用MyBatis将数据入库。具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-10-10
  • Java如何处理json字符串value多余双引号

    Java如何处理json字符串value多余双引号

    这篇文章主要介绍了Java如何处理json字符串value多余双引号,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • Spring中WebClient的创建和使用详解

    Spring中WebClient的创建和使用详解

    这篇文章主要介绍了Spring中WebClient的创建和使用详解,在Spring5中,出现了Reactive响应式编程思想,并且为网络编程提供相关响应式编程的支持,如提供了WebFlux,它是Spring提供的异步非阻塞的响应式的网络框架,需要的朋友可以参考下
    2023-11-11

最新评论