Node.JS: comment envoyer des en-têtes avec des données de formulaire à l’aide du module de requête

J’ai un code comme celui-ci:

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

Comment puis-je définir des en-têtes pour cela? J’ai besoin d’un agent utilisateur, d’un type de contenu et probablement d’autre chose dans les en-têtes:

 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' }; 

J’ai essayé de multiples façons, mais je peux soit envoyer des données d’en-tête ou de formulaire, mais pas envoyer les deux.

J’ai finalement réussi à le faire. Répondez dans l’extrait de code ci-dessous:

 var queryssortingng = require('queryssortingng'); var request = require('request'); var form = { username: 'usr', password: 'pwd', opaque: 'opaque', logintype: '1' }; var formData = queryssortingng.ssortingngify(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! }); 

Cela devrait fonctionner.

 var url = 'http://'; 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 }); 

Je pense que c’est juste parce que vous avez oublié la méthode HTTP . La méthode HTTP de requête par défaut est GET.

Vous devez append la method: 'POST' et votre code fonctionnera si votre backend reçoit la méthode 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); });