Axios:请求标头上缺少Content-Length标头

时间:2017-10-25 14:08:11

标签: node.js axios content-length

我们在生产中遇到的问题是,即使我们在标题属性中对其进行硬编码,也不会发送'Content-Length'标头,因此我们从服务器接收411长度要求错误。< / p>

我们正在使用:

  • Axios 0.16.2
  • NodeJS 6.10
  • 在AWS Lambda环境中部署的应用程序

导致此问题的代码如下:

let cookieJar;
const postBody = "MyBody=MyBodyContentGoesHere";
const url = "https://my-url.com";
return axios
        .post(url,
            postBody,
            {
                headers: {
                    'Content-Type': 'application/x-www-form-urlencoded'
                },
                timeout: 10000,
                jar: cookieJar,
                withCredentials: true
            }
        );

我在.NET中编写了一个应用程序,并且正确发送了标头(无需手动传递)。这个.NET应用程序只是为了测试而编写的,它不是真正的应用程序。

你知道吗? 我在axios github项目中打开了一个问题,但我想向你们了解一些想法。

谢谢。

2 个答案:

答案 0 :(得分:0)

您是否尝试过添加&#34;数据&#34;字段到配置对象?

let cookieJar;
const postBody = "MyBody=MyBodyContentGoesHere";
const url = "https://my-url.com";
return axios
    .post(url,
        postBody,
        {
            data: postBody,
             headers: {
                'Content-Type': 'application/x-www-form-urlencoded'
            },
            timeout: 10000,
            jar: cookieJar,
            withCredentials: true
        }
    );

答案 1 :(得分:0)

我和你有同样的问题。根据{{​​3}}的建议使用querystring为我解决了这个问题。

'use strict';

let querystring = require('querystring');

let cookieJar;
const postBody = querystring.stringify({ MyBody: 'MyBodyContentGoesHere' });
const url = 'https://my-url.com';
return axios.post(url, postBody, {
    headers: {
      'Content-Type': 'application/x-www-form-urlencoded'
    },
    timeout: 10000,
    jar: cookieJar,
    withCredentials: true
  }
);