Node.js发送前的Http请求

Node.js发送前的Http请求,node.js,Node.js,在jQuery中,我们在ajax请求上有beforeSend方法。 Node.js HTTP库中是否有等效的方法 我需要的是:在发送请求之前,我必须获得确切的正文(带有边界等),然后我需要对其签名,并将签名值添加到标头 在jQuery中,我是这样做的: $.ajax({ url: host + path, type: method, data: payload, beforeSend: function (xhr) { addSecurityHeade

在jQuery中,我们在ajax请求上有
beforeSend
方法。 Node.js HTTP库中是否有等效的方法

我需要的是:在发送请求之前,我必须获得确切的正文(带有边界等),然后我需要对其签名,并将签名值添加到标头

在jQuery中,我是这样做的:

$.ajax({
    url: host + path,
    type: method,
    data: payload,
    beforeSend: function (xhr) {
      addSecurityHeaders(xhr, payload)
    })
var request = require('request')


var req = request.post({
              url: host + path,
              headers: headers,
              multipart: {
                chunked: false,
                data: [
                  {
                    'Content-Type': 'multipart/form-data',
                    'fileName': 'file.png',
                    body: dataToBeSent
                  }
                ]
              }
            }, function (err, resp, body) {
              if (err) {
                console.log('Error!');
              } else {
                console.log('URL: ' + body);
              }
            });
我的node.js代码如下所示:

$.ajax({
    url: host + path,
    type: method,
    data: payload,
    beforeSend: function (xhr) {
      addSecurityHeaders(xhr, payload)
    })
var request = require('request')


var req = request.post({
              url: host + path,
              headers: headers,
              multipart: {
                chunked: false,
                data: [
                  {
                    'Content-Type': 'multipart/form-data',
                    'fileName': 'file.png',
                    body: dataToBeSent
                  }
                ]
              }
            }, function (err, resp, body) {
              if (err) {
                console.log('Error!');
              } else {
                console.log('URL: ' + body);
              }
            });

在发送请求之前执行一个简单的回调怎么样

var beforeSend = function(arg, cb){
   // do some stuff 
   cb(dataToBeSend); // return the needed variable
};

beforeSend(arg ,function(dataToBeSend){
   request.post({
      // request parameters
      data : dataToBeSend
   }, function(err, resp, body){
      // error handling
   });
});

这似乎是非常罕见的用例。所以我将把我的解决方案放在这里。 我
使用request.request.prototype.write
获取我需要签名的请求主体部分。当它添加了所有4个部分后,将先前放置了
占位符的标题替换为签名正文。:)


好的,
http
会按原样发送您传递的正文,这样您就可以在发送请求之前对其进行签名。但是我可能错了。如果您发出多部分/表单数据请求,它会添加边界。看起来您使用的是
request
包,而不是直接使用
http
?是
var request=require('request')
,也许您可以直接使用。