记录一次 404 问题排查(罪魁祸首:http请求 header 中的 Content-Length)

338 阅读1分钟

记录一次 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 程序。

没踩过坑的,可能还真不好找。话不多说,直接揪出元凶。

image.png