当前位置: 首页 > news >正文

Java开发-后端请求成功,前端显示失败

文章目录

    • 报错
    • 解决方案
      • 1. 后端未配置跨域支持
      • 2. 后端响应的 Content-Type 或 CORS 配置问题
      • 3. 前端 request 配置问题
      • 4. 浏览器缓存或代理问题
      • 5. 后端端口未被正确映射

报错

如下图,后端显示请求成功,前端显示失败
在这里插入图片描述

解决方案

1. 后端未配置跨域支持

默认情况下,不同源(域名、端口、协议)的请求会受到浏览器的跨域限制(CORS)。前端 http://localhost:8080 和后端 http://localhost:8090 被视为不同源,因此会导致请求被阻止。
在这里插入图片描述
解决方法:在后端添加跨域支持

import org.springframework.context.annotation.Bean;
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 {@Overridepublic void addCorsMappings(CorsRegistry registry) {registry.addMapping("/**") // 匹配所有路径.allowedOrigins("http://localhost:8080") // 允许前端域名.allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS") // 允许的请求方法.allowCredentials(true) // 允许携带凭证.maxAge(3600); // 缓存时间}
}

如果项目中使用了 Spring Boot,可以直接在控制器方法上添加注解:

@CrossOrigin(origins = "http://localhost:8080")
@GetMapping("/login")
public class UserController {public Result login(@RequestParam String username, @RequestParam String password) {// 登录逻辑return Result.success(1);}
}

2. 后端响应的 Content-Type 或 CORS 配置问题

如果后端的返回头缺少正确的内容类型或跨域响应头,浏览器也可能拒绝请求。

解决方法:确保后端返回头正确设置

@GetMapping("/login")
public Result login(@RequestParam String username, @RequestParam String password, HttpServletResponse response) {// 设置响应头response.setHeader("Access-Control-Allow-Origin", "http://localhost:8080");response.setHeader("Access-Control-Allow-Methods", "GET, POST, OPTIONS");response.setHeader("Access-Control-Allow-Headers", "Content-Type, Authorization");response.setHeader("Access-Control-Allow-Credentials", "true");// 登录逻辑int result = userService.login(username, password);return Result.success(result);
}

3. 前端 request 配置问题

检查前端是否正确发起了请求,包括 baseURL 是否正确,是否携带了其他额外的头。

确保前端 axios 配置正确

import axios from "axios";const request = axios.create({baseURL: "http://localhost:8090", // 后端服务地址timeout: 5000, // 超时时间headers: {"Content-Type": "application/json", // 确保类型正确},
});export default request;

调用接口时,应传递 params 而不是 data,因为是 GET 请求:

request({method: "get",url: "/login",params: {username: this.user.username,password: this.user.password,},
}).then((resp) => {console.log(resp.data);}).catch((error) => {console.error(error);});

4. 浏览器缓存或代理问题

某些情况下,浏览器缓存或代理工具可能导致请求异常。

解决方法:

解决方法:

  • 清除浏览器缓存并重试。
  • 检查是否有代理工具拦截了请求(如 Charles 或 Fiddler)。
  • 在请求中加上时间戳避免缓存问题:
params: {username: this.user.username,password: this.user.password,_t: new Date().getTime(), // 避免缓存
}

5. 后端端口未被正确映射

如果你运行的后端服务(如 Spring Boot)监听的端口未正确绑定到网络,前端可能无法访问。

解决方法:

  • 确认后端服务启动成功且端口未被占用。
  • 使用工具(如 Postman)单独测试后端 API,确认后端可用。
http://www.lryc.cn/news/513429.html

相关文章:

  • 未来20年在大语言模型相关研究方向--大语言模型的优化与改进
  • [react] 纯组件优化子
  • 美观强大的文件保险库Chibisafe
  • 详细教程:SQL2008数据库备份与还原全流程!
  • HTML——49.header和footer标签
  • 【蓝桥杯选拔赛真题87】python输出字符串 第十五届青少年组蓝桥杯python选拔赛真题 算法思维真题解析
  • OpenStack-Dashboard界面简单修改
  • DevOps工程技术价值流:Ansible自动化与Semaphore集成
  • 【服务器】上传文件到服务器并训练深度学习模型下载服务器文件到本地
  • 第四届电子信息工程与数据处理(EIEDP 2025)
  • 模型预测控制(MPC)算法介绍
  • 设计模式 创建型 建造者模式(Builder Pattern)与 常见技术框架应用 解析
  • 嵌入式系统中C++的基本使用方法
  • 机器人C++开源库The Robotics Library (RL)使用手册(四)
  • 在 uni-app 中使用 wxml-to-canvas 的踩坑经验总结
  • 视频智能翻译
  • 《Python加解密小实验:探索数据加密与解密的世界》
  • C高级day四shell脚本
  • android studio 写一个小计时器(版本二)
  • 【网络安全实验室】SQL注入实战详情
  • 华为,新华三,思科网络设备指令
  • WebRTC线程的启动与运行
  • Day3 微服务 微服务保护(请求限流、线程隔离、服务熔断)、Sentinel微服务保护框架、分布式事务(XA模式、AT模式)、Seata分布式事务框架
  • 第9章 子程序与函数调用
  • manacher算法
  • Cocos2dx Lua绑定生成中间文件时参数类型与源码类型不匹配
  • 为什么需要 std::call_once?
  • ubuntu非root用户操作root权限问题-virbox挂在共享文件夹
  • 网络通讯协议
  • centos,789使用mamba快速安装devtools