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

解决从JavaScript向Spring Boot控制器发送GET请求的400错误

解决Spring Boot GET请求参数缺失导致的400 Bad Request错误

你遇到的400错误和MissingServletRequestParameterException警告,核心原因是GET请求的参数传递方式错误:你的Spring控制器通过@RequestParam接收URL查询参数,但前端JS代码把参数放在了请求体中,且未实际发送这些参数——GET请求通常不通过请求体传递参数,Spring也不会解析GET请求体里的内容来填充@RequestParam。

修正JavaScript代码(正确传递GET查询参数)

GET请求的参数需要拼接到URL的查询字符串中(格式为?key1=value1&key2=value2...),推荐用URLSearchParams便捷构造参数:

var xhr = new XMLHttpRequest();
// 构造查询参数
var params = new URLSearchParams();
params.append('first_operand', String(first_val));
params.append('operator', String(operator));
params.append('second_operand', String(second_val));

// 将参数拼接到请求URL后
xhr.open("GET", `http://localhost:8080/workout/expression?${params.toString()}`);

xhr.setRequestHeader("Accept", "application/json");
// GET请求无请求体,无需设置Content-Type为application/json,可删除该行
// xhr.setRequestHeader("Content-Type", "application/json");

xhr.onload = () => console.log(xhr.responseText);

// GET请求直接send()即可,无需传入data
xhr.send();

额外注意事项

  • 若前端页面与后端不在同一端口(比如前端跑在3000端口、后端在8080),需修改@CrossOrigin的origins为前端地址,例如@CrossOrigin(origins="http://localhost:3000/"),否则会触发跨域问题。
  • 确保JS代码中的first_val、operator、second_val变量已正确赋值,避免传递空参数。

内容的提问来源于stack exchange,提问作者Mostafa M. Galal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 01:25:22