springboot前后端分离前端接受不到后台的json(也就是跨域问题)

博客指出在Spring Boot中,直接在方法上添加@CrossOrigin注解,可完美解决跨域问题,为开发人员提供了一种便捷的跨域处理方式。
部署运行你感兴趣的模型镜像

springboot直接在方法上加上@CrossOrigin注解完美解决

您可能感兴趣的与本文相关的镜像

GPT-oss:20b

GPT-oss:20b

图文对话
Gpt-oss

GPT OSS 是OpenAI 推出的重量级开放模型,面向强推理、智能体任务以及多样化开发场景

### SpringBoot与Vue实现前后端分离时的前端交互最佳实践 在现代Web应用开发中,SpringBoot作为后端框架,Vue作为前端框架,二者结合可以高效完成复杂的业务需求。以下是关于如何通过前后端分离的方式实现两者的交互的最佳实践。 #### 1. 使用Axios进行HTTP请求 Vue项目通常会引入`axios`库来进行网络请求操作。它是一个基于Promise的HTTP客户端,支持浏览器和Node.js环境下的异步请求处理[^2]。 ```javascript import axios from 'axios'; // 配置基础URL const instance = axios.create({ baseURL: 'http://localhost:8080/api', // 后端API地址 timeout: 5000, // 请求超时时间 }); export default instance; ``` 上述代码展示了如何创建一个全局可用的`axios`实例,并设置默认的基础路径以及超时时间。 #### 2. 数据传输格式 (JSON) 为了简化数据交换的过程,推荐使用JSON作为主要的数据传输格式。SpringBoot能够自动将Java对象序列化为JSON响应给前端,而Vue则可以通过解析这些JSON数据轻松绑定到视图层[^3]。 #### 3. 接口设计标准化 定义清晰、一致性的RESTful API接口对于提升团队协作效率至关重要。例如,在获取用户列表时可遵循如下标准: - **GET /users**: 获取所有用户的集合; - **POST /users**: 创建新用户; - **PUT /users/{id}**: 更新指定ID的用户信息; - **DELETE /users/{id}**: 删除特定ID对应的记录; 这种模式不仅便于理解还能减少沟通成本[^1]。 #### 4. 问题解决方案 当运行在同一台服务器上的不同端口号的应用尝试互相访问资源时可能会遇到CORS(Cross-Origin Resource Sharing)错误。解决方法之一是在SpringBoot应用程序里启用资源共享特性: ```java @Configuration public class WebConfig implements WebMvcConfigurer { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") // 允许所有的路径被调用 .allowedOrigins("*"); // 设置允许哪些名发起请求(这里设为*表示全部) } } ``` 以上配置片段说明了怎样开放整个站点供外部JavaScript程序读取内容而不受同源策略限制。 #### 5. Mock Data模拟测试 为了让前端开发者能够在没有真实后台服务的情况下也能正常开展工作,建议利用mock技术伪造部分静态或者动态的数据集用于界面调试阶段。这样即使暂时缺少完整的后端支撑也不影响整体进度安排。 --- ### 示例代码:登录功能实现 假设存在这样一个场景——用户输入账号密码点击提交按钮之后由系统验证身份合法性并返回相应结果反馈至页面显示区。 ##### Vue组件逻辑编写 ```html <template> <div> <input v-model="username" placeholder="请输入用户名"/> <br/> <input type="password" v-model="password" placeholder="请输入密码"/> <button @click="login">登录</button> </div> </template> <script> import request from '@/utils/request'; export default{ data(){ return { username:'', password:'' }; }, methods:{ login() { const params={uname:this.username,pwd:this.password}; request.post('/auth/login',params).then(res=>{ console.log('Response:',res); if(res.code===200){ alert(`欢迎回来 ${this.username}`); }else{ alert('认证失败,请重试!'); } }).catch(err=>{console.error(err);}); } } } </script> ``` ##### 对应Controller类中的方法声明 ```java @RestController @RequestMapping("/auth") public class AuthController { private final UserService userService; public AuthController(UserService service){ this.userService=service; } @PostMapping(value="/login",consumes={"application/json"}) public ResponseEntity<?> authenticateUser(@RequestBody LoginRequest payload){ String uname=payload.getUname(); String pwd=payload.getPwd(); boolean isValid=userService.validateCredentials(uname,pwd); Map<String,Object> resultMap=new HashMap<>(); if(isValid){ resultMap.put("code",200); resultMap.put("msg","Success"); }else{ resultMap.put("code",401); resultMap.put("msg","Invalid Credentials"); } return new ResponseEntity<>(resultMap,HttpStatus.OK); } } ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值