Node.js NodeJS-表单数据模块,带有基本身份验证的POST文件

Node.js NodeJS-表单数据模块,带有基本身份验证的POST文件,node.js,authentication,https,multipartform-data,Node.js,Authentication,Https,Multipartform Data,试图将文件映像发布到要求其为formData的服务器。使用表单数据模块对此进行帮助。我一直在引用文档 使用以下代码,我收到一个401错误,因为我没有传递密码;有道理 const form = new FormData(); form.append('image', fs.createReadStream('./my-image.jpg')); form.submit({ host: 'XXX.XXX.XXX.XXX', method: 'POST', path: '

试图将文件映像发布到要求其为formData的服务器。使用表单数据模块对此进行帮助。我一直在引用文档

使用以下代码,我收到一个401错误,因为我没有传递密码;有道理

const form = new FormData();
form.append('image', fs.createReadStream('./my-image.jpg'));

  form.submit({
    host: 'XXX.XXX.XXX.XXX',
    method: 'POST',
    path: '/api/config',
  }, function(err, res) {
    console.log(res.statusCode);
  });
但是,如果我添加密码,它将完全失败,并且res是未定义的

const form = new FormData();
form.append('image', fs.createReadStream('./my-image.jpg'));

  form.submit({
    host: 'XXX.XXX.XXX.XXX',
    method: 'POST',
    auth: ':mypassword',
    path: '/api/config',
  }, function(err, res) {
    console.log(res.statusCode);
  });
如果我在Postman中使用基本身份验证设置了相同类型的formData,它就可以工作了

想法?

我建议使用请求/请求承诺模块,看看您的身份验证问题是否得到解决

const request = require('request-promise');

request({
  url: 'url',
  method: 'POST',
  auth: {
     user: 'user',
     password: 'password'
  },
  formData: {
    image: fs.createReadStream('./my-image.jpg')
  }
})
.then(console.log)
.catch(console.error)
更新:

错误报告代码:“HPE\U无效头\U令牌”,原因:“无效头” 代币'

尝试使用以下解析器:

如果您使用的是节点12.x,请使用-http parser=legacy标志运行节点


同时检查以下问题:

是否发送用户?,显示错误,如果未定义res,则显示错误。不需要用户,仅密码console.logerr和显示输出。正如我在下面解释的,也可以尝试请求。错误报告代码:“HPE\u无效的\u头\u令牌”,原因:“无效的头令牌”,请尝试请求,以防表单数据出于某种原因生成无效请求。节点12中似乎存在问题,对于某些请求也是如此:尝试了请求和http解析器js,仍然没有骰子。它的工作原理是,一旦我添加了解析器,就得到了200条回复。但是,它实际上并没有获取图像,响应包括您访问了默认HTTP处理程序。派生一个新的处理程序并在主体中实现。因此,显然服务器真的希望映像密钥被称为“file”而不是“image”,这使得上面的工作不需要解析器。谢谢
// Monkey patch before you require http for the first time.
process.binding('http_parser').HTTPParser = require('http-parser-js').HTTPParser;