You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

纯HTML+JS用Axios调用SpringBoot API报400错误求助

排查Axios POST 400错误的常见原因及解决方法

1. 请求头Content-Type不匹配

Postman会自动适配后端要求的Content-Type(比如application/json),但前端Axios如果没显式设置,后端可能无法解析请求体。

  • 如果后端接收JSON格式,务必在Axios请求里加请求头:
    axios.post('http://localhost:8081/customers', yourData, {
      headers: {
        'Content-Type': 'application/json'
      }
    })
    
  • 如果后端接收表单数据(application/x-www-form-urlencoded),用URLSearchParams包装数据:
    const formData = new URLSearchParams();
    formData.append('username', document.getElementById('username').value);
    formData.append('email', document.getElementById('email').value);
    axios.post('http://localhost:8081/customers', formData);
    

2. 请求体数据格式/字段不匹配

Postman里你手动构造的请求体是符合后端DTO结构的,但前端拼接的数据可能存在字段名写错、数据类型不符(比如把数字传成字符串、日期格式不对)的问题。

  • 发送请求前先在控制台打印数据,和Postman里的请求体对比:
    console.log('要发送的数据:', yourData);
    
    重点核对字段名、必填项、数据类型是否完全一致。

3. 表单默认提交行为未阻止

如果你的HTML里用了<form>标签,点击提交按钮时浏览器会触发默认的表单提交(跳转页面),导致Axios请求被中断,表现为400错误。

  • 给表单添加提交事件,阻止默认行为:
    document.querySelector('#registerForm').addEventListener('submit', function(e) {
      e.preventDefault(); // 阻止默认跳转
      // 这里执行Axios请求逻辑
    });
    

4. 后端参数校验失败

后端可能加了校验注解(比如@NotNull、@Email),前端传的数据不符合规则(比如邮箱格式错误、必填项为空),导致后端返回400。

  • 查看SpringBoot后端的控制台日志,里面会有具体的校验失败提示(比如"手机号格式不正确"),对应修正前端输入。

5. 跨域配置问题(隐性400)

有时候跨域配置不完整,会导致请求被浏览器拦截,表面报错400。

  • 在SpringBoot的Controller类上临时添加@CrossOrigin(origins = "*")(开发环境用,生产环境要指定具体域名),或者全局配置CORS。

快速调试技巧

打开浏览器开发者工具的Network面板,查看发送的POST请求:

  • 检查Request Headers里的Content-Type是否正确
  • 对比Request Payload和Postman里的请求体结构
  • 查看Response标签里的详细错误信息,后端通常会返回具体的失败原因

内容的提问来源于stack exchange,提问作者Kane Iroshan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 13:55:01