Spring Boot中解决跨域问题(CORS)

这篇具有很好参考价值的文章主要介绍了Spring Boot中解决跨域问题(CORS)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 跨域介绍

首先解释什么是跨域,跨域就是前端和后端的端口号不同;会产生跨域问题,这里浏览器的保护机制(同源策略)。
同源策略:前端和后端的协议、域名、端口号三者都相同叫做同源。
我们看一下不同源:
VUE:http://localhost:8080
Spring: http://localhost:8081/list
当我们出现跨域问题,前端就会报一个错(篮框扩这那个):
Spring Boot中解决跨域问题(CORS),spring boot,后端,java

2. 解决方法

上方就是不同源,两者的协议、域名相同,但是端口号不同;如何解决呢,使用Spring Boot解决,它提供三种方案:文章来源地址https://www.toymoban.com/news/detail-742349.html

  1. 直接在方法上方添加@CrossOrigin注解即可解决问题
	@CrossOrigin
    @RequestMapping("/getuserbyid")
    public UserInfo getUserById(Integer id) {
        if(id == null ) return null;
        return userService.getUserById(id);
    }
  1. 添加 CORS 过滤器
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;

@Configuration
public class CorsConfig {

   @Bean
   public CorsFilter corsFilter() {

       CorsConfiguration corsConfiguration = new CorsConfiguration();
       corsConfiguration.setAllowCredentials(true); // 允许cookies跨域
       corsConfiguration.addAllowedHeader("*"); // 请求头字段
       corsConfiguration.addAllowedMethod("*"); // 方法
       corsConfiguration.addAllowedOrigin("*"); // 允许向该服务器提交请求的URI,*表示全部允许,自定义可以添加多个,在SpringMVC中,如果设成*,会自动转成当前请求头中的Origin
       UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
       source.registerCorsConfiguration("/**",corsConfiguration); // 添加映射路径,以及参数


       return new CorsFilter(source);
   }
}
  1. 重写 WebMvcConfigurer 接口中的 addCorsMappings 方法


import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class WebConfig implements WebMvcConfigurer {
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        // 先设置映射
        registry.addMapping("/**")
                .allowedOriginPatterns("*") // 允许向该服务器提交请求的URI,*表示全部允许,自定义可以添加多个,在SpringMVC中,如果设成*,会自动转成当前请求头中的Origin
                .allowCredentials(true) // 允许cookies跨域
                .allowedHeaders("*") // 请求头字段
                .allowedMethods("GET","POST") // 允许跨域的方法
                .maxAge(3600);// 预检请求的缓存时间(秒),即在这个时间段里,对于相同的跨域请求不会再预检了
    }
}

到了这里,关于Spring Boot中解决跨域问题(CORS)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 解决Spring Boot跨域问题(配置JAVA类)

    跨域问题指的是不同端口之间,使用 ajax 无法相互调用的问题。跨域问题本质是浏览器的一种保护机制,它是为了保证用户的安全,防止恶意网站窃取数据。 比如前端用的端口号为8081,后端用的端口号为8080,后端想接收前端发送的数据就会出现跨域问题。 如图所示: 这里

    2024年01月17日
    浏览(31)
  • Spring Boot 解决跨域问题的 5种方案

     跨域问题本质是浏览器的一种保护机制,它的初衷是为了保证用户的安全,防止恶意网站窃取数据。 在请求时,如果出现了以下情况中的任意一种,那么它就是跨域请求: 协议不同,如 http 和 https; 域名不同; 端口不同。 也就是说, 即使域名相同,如果一个使用的是

    2024年02月15日
    浏览(28)
  • 解决Spring Boot前后端分离开发模式中的跨域问题

    在实际开发中,经常会遇到前端Vue应用与后端Spring Boot API接口存在跨域访问的问题。本篇博客将分享解决Spring Boot前端Vue跨域问题的实战经验,帮助开发者快速解决该问题。 跨域问题是由于浏览器的同源策略引起的。同源策略限制了从一个源加载的文档或脚本如何与来自另一

    2024年02月10日
    浏览(31)
  • Spring Boot跨域问题简介

    在Web开发中,跨域指的是在浏览器中访问一个不同于当前域名的资源。浏览器出于安全考虑,限制了这种跨域资源的访问。具体来说,当浏览器使用XMLHttpRequest或Fetch API发送跨域请求时,目标服务器必须在响应头中包含特定的CORS(跨源资源共享)规则,否则浏览器会阻止该请

    2024年02月09日
    浏览(29)
  • Spring Boot 如何配置 CORS 支持

    跨域资源共享(CORS)是一种重要的网络安全策略,用于限制浏览器在不同域之间的HTTP请求。Spring Boot提供了简单而强大的方法来配置CORS支持,以确保您的应用程序能够与其他域的资源进行安全交互。本文将介绍如何在Spring Boot中配置CORS支持,并附带相应的示例代码。 CORS是一

    2024年02月07日
    浏览(37)
  • Spring Boot之跨域

    随着前后端分离架构的流行,Web应用中的跨域问题变得愈发突出。Spring Boot作为一款强大的Java后端框架,如何处理跨域请求成为了开发者关注的焦点。本文将深入研究Spring Boot中的跨域技术,为读者提供全面的解决方案和最佳实践。 协议、域名、端口 3 个都相同就是同源 跨域

    2024年01月20日
    浏览(33)
  • Spring Boot 跨域访问

    出于安全的考虑,浏览器会禁止 Ajax 访问不同域的地址,在现如今微服务横行的年代,跨域访问是非常常见的。W3C 的 CORS ( Cross-origin-resource-sharing ) 规范中也已经允许跨域访问, 并被主流浏览器所支持,它们包括: Chrome 3+; Firefox 3.5+; Opera 12+; Safari 4+; IE 8+; Spring Boot 提供了对

    2024年02月08日
    浏览(41)
  • Spring Boot 实战 | Spring Boot整合JPA常见问题解决方案

    专栏集锦,大佬们可以收藏以备不时之需: Spring Cloud 专栏: Python 专栏: Redis 专栏: TensorFlow 专栏: Logback 专栏: 量子计算: 量子计算 | 解密著名量子算法Shor算法和Grover算法 AI机器学习实战: AI机器学习实战 | 使用 Python 和 scikit-learn 库进行情感分析 AI机器学习 | 基于lib

    2024年02月04日
    浏览(47)
  • 前端调用DRI后端API出现跨域资源共享(CORS)问题解决办法

    目录 1. 引言 2. 跨源资源共享和实现方法 3. 在Django项目中配置django-cors-headers库 Reference 在进行后端API开发时,有时会遇到“跨域资源共享 (CORS) 请求...被阻止“的错误,如图1所示。本文讲解如何在使用DRF(Django REST Framework)的后端API开发项目中解决这个问题。 A cross-origin re

    2024年04月25日
    浏览(36)
  • 【解决】Spring Boot创建项目常见问题

    🎥 个人主页:Dikz12 🔥个人专栏:Spring学习之路 📕格言:吾愚多不敏,而愿加学 欢迎大家👍点赞✍评论⭐收藏 目录 idea无maven选项  无效发行版17  类⽂件具有错误的版本 61.0, 应为 52.0  Maven jar 包下载失败问题处理 1.检查配置Maven源 正确的settings.xml⽂件(配置了国内源)

    2024年04月25日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包