记录一次 404 问题排查(罪魁祸首:http请求 header 中的 Content-Length)
今天,实习生问了我一个问题,说是请求了一个http接口,一直报404,但是看请求路径没有问题,找不到原因。
代码大概是这样的
@RestController
@RequestMapping({"mapping1"})
public class XxController {
@Resource
private XxService xxService;
@RequestMapping("mapping2")
public Result getResult(
@RequestBody Arg arg
) {
DTOArg dtoArg = arg.convertToDTO();
DTOResult dtoResult = xxService.getDtoResult(dtoArg);
return convert2Result(dtoResult);
}
}
执行的 curl 如下
curl 'https://xxx:xx/mapping1/mapping2' \
-X 'POST' \
-H 'Content-Type: application/json; charset=utf-8' \
-H 'Accept: application/json, text/javascript, */*; q=0.01' \
-H 'Content-Length: 19' \
-H 'Connection: keep-alive' \
--data-binary '{"xx1":"","xx2":0,"xx3":"","xx4":0,"xx5":1709395199000}'
一个很简单的 java web 程序。
没踩过坑的,可能还真不好找。话不多说,直接揪出元凶。