当前位置: 首页 > 知识库问答 >
问题:

节点。js:如何使用请求模块发送包含表单数据的标题?

东方华晖
2023-03-14

我有如下代码:

var req = require('request');

req.post('someUrl',
   { form: { username: 'user', password: '', opaque: 'someValue', logintype: '1'}, },
   function (e, r, body) {
      console.log(body);
});

我如何设置标题?我需要用户代理、内容类型,可能还有其他一些东西在标题中:

headers = { 
   'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.110 Safari/537.36',
   'Content-Type' : 'application/x-www-form-urlencoded' 
};

我尝试了多种方法,但我可以发送标题或表单数据,但未能同时发送这两种数据。

共有3个答案

诸龙野
2023-03-14

我想这只是因为你忘记了HTTP方法。请求的默认HTTP方法是GET。

你应该添加method:'POST',如果你的后端收到了POST方法,你的代码就会工作。

var req = require('request');

req.post({
   url: 'someUrl',
   form: { username: 'user', password: '', opaque: 'someValue', logintype: '1'},
   headers: { 
      'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.110 Safari/537.36',
      'Content-Type' : 'application/x-www-form-urlencoded' 
   },
   method: 'POST'
  },

  function (e, r, body) {
      console.log(body);
  });
吴星汉
2023-03-14

这应该行得通。

var url = 'http://<your_url_here>';
var headers = { 
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:24.0) Gecko/20100101 Firefox/24.0',
    'Content-Type' : 'application/x-www-form-urlencoded' 
};
var form = { username: 'user', password: '', opaque: 'someValue', logintype: '1'};

request.post({ url: url, form: form, headers: headers }, function (e, r, body) {
    // your callback body
});
贺海
2023-03-14

我终于设法做到了。在下面的代码片段中回答:

var querystring = require('querystring');
var request = require('request');

var form = {
    username: 'usr',
    password: 'pwd',
    opaque: 'opaque',
    logintype: '1'
};

var formData = querystring.stringify(form);
var contentLength = formData.length;

request({
    headers: {
      'Content-Length': contentLength,
      'Content-Type': 'application/x-www-form-urlencoded'
    },
    uri: 'http://myUrl',
    body: formData,
    method: 'POST'
  }, function (err, res, body) {
    //it works!
  });
 类似资料:
  • 问题内容: 我有如下代码: 如何为此设置标题?我需要用户代理,内容类型以及标题中可能包含的其他内容: 我已经尝试了多种方式,但是我可以发送标头或表单数据,但均不能发送。 问题答案: 我终于设法做到了。在下面的代码段中回答:

  • 问题内容: 有人可以解释如何使用request.js池哈希吗? 在github上的注释说,这大约池: 池-包含这些请求的代理的哈希对象。如果省略,该请求将使用设置为节点的默认maxSockets的全局池。 pool.maxSockets-包含池中最大套接字数量的整数。 我有用于编写CouchDB实例的代码(请注意问号)。基本上,任何连接到我的Node服务器的用户都将彼此独立地写入数据库: 什么是高

  • 我正在使用谷歌云视觉检测图像上的文本。这种方法在80%的情况下有效。另外20%,我得到了这个错误: 当我在谷歌上搜索这个问题时,似乎我需要发送特定的标题和我的请求来解决这个问题,基本上就像这里指定的:https://cloud.google.com/vision/docs/ocr#specify_the_language_optional 但是,我不知道如何用我正在使用的Node.js代码发送这些

  • axios请求点击控制器上的url,但将空值设置到POJO类中,当我使用chrome中的开发人员工具时,有效负载包含数据。我做错了什么? Axios POST请求: 浏览器响应: 过帐多部分/表单数据时出错。Content-Type标头缺少边界 谁能解释一下如何设置边界或者我如何使用Axios发送表单数据。

  • 我用请求模块和异步模块的组合并行爬行了很多链接 我注意到很多和错误,尽管使用chrome可以访问链接并快速响应。 在请求选项中,我将限制为2,将限制为10000。我使用限制为2的来减少每次请求的并行性。所以我有2套接字,2个请求和10秒的超时时间来等待来自服务器的头响应,但我得到了这些错误。 在这里s我使用的请求配置: 以下是我用来生成链接的代码片段: 我听了错误事件,我看到每当错误代码为时,co

  • 问题内容: 我有一个资源“角色”,它与“用户”有很多关系。要管理“角色”,我需要将角色ID和用户ID发送到服务器,以便从正确的用户(不一定是已登录的用户)中删除角色。 这是我正在尝试的方法,但是根据文档,这是不可能的。我知道我可以在uri中发送两个id,但是我的laravel后端会自动设置一个资源丰富的resource / {resourceid}路由,我希望在可能的情况下使用它。有没有办法做到这