解决Spring Boot前后端分离开发模式中的跨域问题

在实际开发中,经常会遇到前端Vue应用与后端Spring Boot API接口存在跨域访问的问题。本篇博客将分享解决Spring Boot前端Vue跨域问题的实战经验,帮助开发者快速解决该问题。

一、跨域问题的原因

跨域问题是由于浏览器的同源策略引起的。同源策略限制了从一个源加载的文档或脚本如何与来自另一个源的资源进行交互。当协议、主机名或端口号不同时,浏览器就会认为这是跨域访问,从而拒绝请求。

二、解决方案

1. 后端配置

在Spring Boot后端项目中,我们可以通过添加跨域配置允许前端Vue应用的跨域请求。

java 复制代码
@Configuration
public class CorsConfig implements WebMvcConfigurer {

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedOrigins("*")
                .allowedMethods("*")
                .allowedHeaders("*")
                .allowCredentials(true)
                .maxAge(3600);
    }
}

以上代码中使用@Configuration注解标注一个配置类,并实现WebMvcConfigurer接口。在addCorsMappings方法中,配置了允许所有来源(allowedOrigins("*"))、所有HTTP方法(allowedMethods("*"))、所有请求头(allowedHeaders("*"))、支持跨域携带Cookie(allowCredentials(true))以及缓存时间(maxAge(3600))。

2. 前端配置

在Vue前端项目中,我们可以通过配置vue.config.js文件来解决跨域问题。

bash 复制代码
module.exports = {
    devServer: {
        proxy: {
            '/api': {
                target 'http://localhost:8080',  // 后端API接口地址
                changeOrigin: true,
                pathRewrite: {
                    '^/api': ''
                }
            }
        }
    }
}

以上代码中,我们通过devServer配置项的proxy属性来配置代理。将请求路径中以api开头的请求代理到指定的后端API接口地址(这里是http://localhost:8080)。changeOrigin设置为true表示开启跨域。

三、实战示例

在实际开发中,我们可以通过以下示例来演示解决Spring Boot端Vue跨域问题的实战经验。

后端代码示例:

java 复制代码
@RestController
@RequestMapping("/api")
public class HelloController {

    @GetMapping("/hello")
    public String hello() {
        return "Hello, World!";
    }
}
html 复制代码
```javascript
axios.get('/api/hello')
    .then(response => {
        console.log(response.data);
    })
    .catch(error => {
        console.error(error);
    });

以上示例中,后端提供了一个简单的接口/api/hello,前端通过axios发送GET请求来获取数据。

四、总结

本篇博客介绍了解决Spring Boot前端Vue跨域问题的实战经验,并提供了后端和前端的配置示例。通过配置后端和前端,我们可以轻松解决跨域问题,实现正常的前后端交互。希望本文能对开发者有所帮助,欢迎大家扩散分享!

以上内容仅供参考,具体情况还需根实际项目进行调整。如有更好的解决方案,欢迎留言讨论。

参考资料

相关推荐
Rain的Java大神之路1 分钟前
Java 工程师做 AI,核心机会在「落地」而非「训练」
java·后端·ai编程
柠檬味拥抱3 分钟前
基于 YOLO11 的六类生活垃圾视觉分类系统 | 用于社区投放点智能督导、分拣线品类分流、投错率统计分析 | 附完整源码与效果演示
后端
程序员小新70020 分钟前
RAG 实战与踩坑:交通法规智能问答助手
人工智能·后端
EAIReport28 分钟前
SpringBoot 与 SpringCloud 深度解析:核心特点、差异与协同关系
spring boot·后端·spring cloud
RuoyiOffice31 分钟前
SpringBoot3+Vue3 企业 AI 工作流:Tinyflow 画布、LLM 节点与在线试跑怎么落地
spring boot·大模型·vue3·agent·ai工作流·ruoyi office·tinyflow
梦里寻码33 分钟前
从 0 到 1 用 NestJS + LangChain 搭一套可售卖的 SaaS AI 客服:挂件一行代码接入,知识库秒变 SEO 帮助中心
前端·后端·github
imDwAaY35 分钟前
程序为什么会卡在死锁里?从四个必要条件到预防与解除
后端·操作系统
Bazingga37 分钟前
知识注入的两条路:RAG知识库与Skills蒸馏
后端
薛之谦_38 分钟前
JAVA 多线程编程:从基础原理到实战应用
java·开发语言
LMT_Lanmantech39 分钟前
Creo许可降本增效:不增购,也能让现有许可发挥更大价值
java·大数据·开发语言