You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Axios POST请求在请求体为null时返回400错误(Invalid Content-Length header)

Axios POST请求在请求体为null时返回400错误(Invalid Content-Length header)

我之前也碰到过类似的问题,这大概率是因为Axios对null请求体的处理逻辑和服务器的期望不匹配导致的。当你把请求体设为null时,Axios可能会错误地生成或设置Content-Length请求头,而服务器无法识别这种情况,就返回了400错误。

这里有几个可行的解决方案,你可以根据自己的场景选择:

  • undefined代替null作为请求体
    Axios对undefined的处理和null不同,传入undefined时,Axios会明白你不需要发送请求体,从而正确处理请求头:

    const requestBody = undefined;
    const configParams = {
        "params": {
            "type": "food",
            "is_checked": false
        },
        "responseType": "json"
    };
    axios.post(url, requestBody, configParams);
    
  • 直接省略请求体参数
    如果确实不需要请求体,你可以直接把配置对象作为第二个参数传入,跳过请求体的位置:

    const configParams = {
        "params": {
            "type": "food",
            "is_checked": false
        },
        "responseType": "json"
    };
    axios.post(url, configParams);
    
  • 手动设置Content-Length头为0
    有些服务器期望POST请求即使没有内容,也要明确设置Content-Length: 0,你可以在配置里手动添加这个头:

    const requestBody = null;
    const configParams = {
        "params": {
            "type": "food",
            "is_checked": false
        },
        "responseType": "json",
        headers: {
            'Content-Length': 0
        }
    };
    axios.post(url, requestBody, configParams);
    

你可以先试试前两种方案,一般都能解决问题,因为它们让Axios更准确地处理“无请求体”的POST请求,避免生成服务器无法识别的Content-Length头。

内容来源于stack exchange

火山引擎 最新活动