如何使用 node.js 库表单数据制作 https post?

How to make an https post using node.js library form-data?

我们有一个 api 的客户需要通过 https 发帖。我们有一个 node.js 应用程序,并且一直在使用 felixge 的 node-form-data 包 (https://github.com/felixge/node-form-data) 来进行提交。虽然这些调用在客户端的基于 http 的测试 api 上运行良好,但当我们尝试调用使用 https 的生产 api 时,api 以 400 响应,客户端告诉我们这是到期的通过 http 传入的呼叫。

关于我们如何在提交中指定 https 有什么想法吗?

我们的代码如下所示:

var FormData = require('form-data');
    var couponForm = new FormData();
    couponForm.append('data','{"coupon":{"code":"' + couponCode + '", "discount": "' + discountPercentage + '", "type": "percent", "product": "' + productId + '", "times": "1", "expires": "' + couponExpiresDt + '"}}');

couponForm.submit({hostname:config.client_api_host, path:'/api/coupon/add', auth:auth}, function(err, res) {
      res.resume();

      if (err) {
        logger.log('error', 'Client API createDiscount post error:');
        logger.log('error', {err: err});
        callback(err);
      } else if (res.statusCode != 200) {
        logger.log('error', 'Client API createDiscount post response error:');
        console.log('error', res);
        logger.log('error', {statusCode: res.statusCode});
        logger.log('error', {body: res.body});
        callback(new Error('Client API createDiscount post response error:', res.statusCode));
      } else {
        logger.log('info', "Client coupon code " + couponCode +  " has apparently been created");
        callback(null, {coupon_code: couponCode, expires: couponExpiresDt});
      }
    });

根据this,您需要在选项中输入protocol: 'https:'

couponForm.submit({
    hostname: config.client_api_host,
    path: '/api/coupon/add',
    auth: auth,
    protocol: 'https:'
}, function(err, res) {
    [...]
});