建议收藏Spring Boot 实现跨域的 5 种方式,总有一种适合你!

04-01 阅读 0评论
  • 一、为什么会出现跨域问题

    建议收藏Spring Boot 实现跨域的 5 种方式,总有一种适合你!,建议收藏Spring Boot 实现跨域的 5 种方式,总有一种适合你!,词库加载错误:未能找到文件“C:\Users\Administrator\Desktop\火车头9.8破解版\Configuration\Dict_Stopwords.txt”。,使用,访问,方法,第1张
    (图片来源网络,侵删)
  • 二、什么是跨域

  • 三、非同源限制

  • 四、java 后端 实现 CORS 跨域请求的方式

    • 1.返回新的 CorsFilter(全局跨域)

    • 2. 重写 WebMvcConfigurer(全局跨域)

    • 3. 使用注解 (局部跨域)

      建议收藏Spring Boot 实现跨域的 5 种方式,总有一种适合你!,建议收藏Spring Boot 实现跨域的 5 种方式,总有一种适合你!,词库加载错误:未能找到文件“C:\Users\Administrator\Desktop\火车头9.8破解版\Configuration\Dict_Stopwords.txt”。,使用,访问,方法,第2张
      (图片来源网络,侵删)
    • 4. 手动设置响应头(局部跨域)

    • 5. 使用自定义filter实现跨域


    一、为什么会出现跨域问题 

    出于浏览器的同源策略限制,网站之间的交互是受到一定限制的。同源策略(Same Origin Policy)是一种约定,它是浏览器最核心也最基本的安全功能。同源策略的作用在于限制一个网页文档或一个脚本如何能够与另一个源的资源进行交互。如果缺少了同源策略,那么浏览器的正常功能可能会受到影响,甚至会被恶意攻击者利用。可以说,Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现。

    同源策略的具体实现是通过阻止一个域的 JavaScript 脚本和另外一个域的内容进行交互。所谓同源,就是两个页面具有相同的协议(protocol)、主机(host)和端口号(port)。因此,如果两个页面的 URL 中协议、主机或端口号有任何一个不同,就会被浏览器视为不同源。同源策略会阻止 JavaScript 代码访问跨域的 DOM 对象,防止恶意脚本窃取用户的信息或者破坏其他网站的正常运行。

     

    建议收藏Spring Boot 实现跨域的 5 种方式,总有一种适合你!,建议收藏Spring Boot 实现跨域的 5 种方式,总有一种适合你!,词库加载错误:未能找到文件“C:\Users\Administrator\Desktop\火车头9.8破解版\Configuration\Dict_Stopwords.txt”。,使用,访问,方法,第3张
    (图片来源网络,侵删)

    二、什么是跨域

    当一个请求url的协议、域名、端口三者之间任意一个与当前页面url不同即为跨域

     建议收藏Spring Boot 实现跨域的 5 种方式,总有一种适合你!

    三、非同源限制

    1. 无法读取非同源网页的 Cookie、LocalStorage 和 IndexedDB

    2. 无法接触非同源网页的 DOM

    3. 无法向非同源地址发送 AJAX 请求

    四、java 后端 实现 CORS 跨域请求的方式

    对于 CORS的跨域请求,主要有以下几种方式可供选择:

    1. 返回新的CorsFilter

    2. 重写 WebMvcConfigurer

    3. 使用注解 @CrossOrigin

    4. 手动设置响应头 (HttpServletResponse)

    5. 自定 web filter 实现跨域

    注意:

    • CorFilter / WebMvConfigurer / @CrossOrigin 需要 SpringMVC 4.2以上版本才支持,对应springBoot 1.3版本以上

    • 上面前两种方式属于全局 CORS 配置,后两种属于局部 CORS配置。如果使用了局部跨域是会覆盖全局跨域的规则,所以可以通过 @CrossOrigin 注解来进行细粒度更高的跨域资源控制。

    • 其实无论哪种方案,最终目的都是修改响应头,向响应头中添加浏览器所要求的数据,进而实现跨域

      1.返回新的 CorsFilter(全局跨域)

      在任意配置类,返回一个 新的 CorsFIlter Bean ,并添加映射路径和具体的CORS配置路径。

       建议收藏Spring Boot 实现跨域的 5 种方式,总有一种适合你!


      2. 重写 WebMvcConfigurer(全局跨域) 

      建议收藏Spring Boot 实现跨域的 5 种方式,总有一种适合你! 

      3. 使用注解 (局部跨域)​​​​​​​ 

      在控制器(类上)上使用注解 @CrossOrigin:,表示该类的所有方法允许跨域。建议收藏Spring Boot 实现跨域的 5 种方式,总有一种适合你! 

      在方法上使用注解 @CrossOrigin:建议收藏Spring Boot 实现跨域的 5 种方式,总有一种适合你! 

      4. 手动设置响应头(局部跨域)

      使用 HttpServletResponse 对象添加响应头(Access-Control-Allow-Origin)来授权原始域,这里 Origin的值也可以设置为 “*”,表示全部放行。

       建议收藏Spring Boot 实现跨域的 5 种方式,总有一种适合你!

      5. 使用自定义filter实现跨域

      首先编写一个过滤器,可以起名字为MyCorsFilter.java

       建议收藏Spring Boot 实现跨域的 5 种方式,总有一种适合你!

      在web.xml中配置这个过滤器,使其生效 建议收藏Spring Boot 实现跨域的 5 种方式,总有一种适合你!

       

      Spring Boot 实现跨域的方式可以帮助你在开发过程中更加灵活的处理前端请求。在实际应用中,你可能会面临各种不同的跨域场景,例如:前端应用和后端服务分离,不同的子域名之间进行数据交互,或者是前端本地开发时需要访问远程服务器等。针对这些不同的场景,Spring Boot 可以提供多种方式来解决跨域问题。

      除了本文提到的方式,还有其他的跨域解决方案,例如使用 Nginx 反向代理、使用 JSONP 等。不同的方式在不同的场景下都有其适用性和限制性,需要根据具体情况进行选择。希望本文能够帮助你更好地理解 Spring Boot 实现跨域的方式,同时也希望你能够在实际开发中获得更多的收获和启发。


免责声明
本网站所收集的部分公开资料来源于AI生成和互联网,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

发表评论

快捷回复: 表情:
评论列表 (暂无评论,人围观)

还没有评论,来说两句吧...

目录[+]