SpringBoot+vue项目跨域访问问题 CORS error

本文探讨了如何解决SpringBoot与Vue项目中的跨域访问问题,通过CORS配置实现全站允许任意域名访问,并详细介绍了在WebMVCConfig中进行的CORS和Interceptor配置。

SpringBoot+vue项目跨域访问问题 CORS error

在这里插入图片描述

在前后端分离开发中,存在跨域访问问题,我们在后端需要配置。


import com.mszlu.blog.handler.LoginInterceptor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class WebMVCConfig implements WebMvcConfigurer {
    @Autowired
    private LoginInterceptor loginInterceptor;

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        //跨域配置所有的域名ip都可以
        registry.addMapping("/**").allowedOrigins("*");
        //registry.addMapping("/**").allowedOrigins("http://localhost");
        
        //开发8080
        //registry.addMapping("/**").allowedOrigins("http://localhost:8080");
    }

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        //拦截test接口,后续实际遇到需要拦截的接口时,在配置为真正的拦截接口
        registry.addInterceptor(loginInterceptor)
                .addPathPatterns("/test")
                .addPathPatterns("/comments/create/change")
                .addPathPatterns("/articles/publish");
    }
}
基于Spring BootVue项目开发理念和最佳实践,主要围绕前后端分离架构、模块化设计、快速迭代开发以及良好的可维护性展开。这种组合在现代Web应用开发中被广泛采用,能够有效提升开发效率和系统稳定性。 ### 项目开发理念 1. **前后端分离** Spring Boot 作为后端服务提供 RESTful API 接口,Vue.js 作为前端框架专注于视图层的渲染与交互。这种架构使得前后端可以并行开发、独立部署,提升团队协作效率 [^3]。 2. **模块化与组件化设计** Vue 的组件化设计和 Spring Boot 的自动配置机制都强调模块化开发理念,有助于构建高内聚、低耦合的系统。这种设计便于后期维护与功能扩展 [^5]。 3. **API 驱动开发** 前端通过调用后端提供的 API 获取数据并进行展示,这种接口驱动的方式有助于统一数据格式,便于前后端对接与测试 [^2]。 ### 最佳实践 1. **统一的数据格式与错误处理机制** 后端应统一返回结构化的数据格式,例如包含状态码、消息体和数据内容的对象结构。同时,建立统一的异常处理机制,确保前端能够清晰识别请求结果 [^3]。 2. **问题解决方案** 在前后端分离项目中,常见问题访问Spring Boot 提供了多种解决方案,如使用 `@CrossOrigin` 注解或配置全局的 CORS 过滤器来处理请求 [^3]。 3. **前后端协同开发流程** 可采用 Mock 数据或接口文档工具(如 Swagger)来实现前后端并行开发,降低开发依赖性。Vue 项目可通过 Axios 与后端进行数据交互 [^2]。 4. **项目结构规范** - Vue 项目建议采用 Vue CLI 搭建基础结构,合理划分组件、路由、状态管理(如 Vuex)等模块 [^5]。 - Spring Boot 项目应遵循标准的分层结构(Controller、Service、Repository),并合理使用 Spring Boot Starter 提供的自动配置功能 [^4]。 5. **部署与优化策略** - 前端项目可使用 Webpack 打包为静态资源,部署到 Nginx 或 CDN,提升访问速度。 - 后端可结合 Redis 实现缓存机制,减少数据库访问压力,提高系统响应速度 [^2]。 6. **安全机制集成** 使用 Spring Security 或 Shiro 实现用户认证与权限控制,Vue 前端通过 Token(如 JWT)与后端进行安全通信 。 ### 示例代码:统一返回结构 ```java public class ApiResponse<T> { private int code; private String message; private T data; public static <T> ApiResponse<T> success(T data) { return new ApiResponse<>(200, "Success", data); } public static <T> ApiResponse<T> error(int code, String message) { return new ApiResponse<>(code, message, null); } // 构造方法、Getter、Setter } ``` ### 示例代码:Vue 中使用 Axios 请求数据 ```javascript import axios from 'axios'; export default { methods: { async fetchData() { try { const response = await axios.get('/api/data'); this.data = response.data; } catch (error) { console.error('Error fetching data:', error); } } } } ``` ---
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

suheng-1222

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值