Question Comment créer une demande de client HTTP avec un cookie?


J'ai un serveur node.js Connect qui vérifie les cookies de la requête. Pour le tester dans node, j'ai besoin d'un moyen d'écrire une requête client et d'y attacher un cookie. Je comprends que les requêtes HTTP ont l'en-tête "cookie" pour cela, mais je ne sais pas comment le configurer et l'envoyer - j'ai aussi besoin d'envoyer des données POST dans la même requête, donc j'utilise le module de restauration de danwrong, mais cela ne semble pas me laisser ajouter cet en-tête.

Des suggestions sur la manière de faire une demande au serveur avec un cookie codé en dur et des données POST?


38
2018-01-02 18:19


origine


Réponses:


Voici comment je pense que vous faites une requête POST avec des données et un cookie en utilisant simplement la bibliothèque http du noeud. Cet exemple consiste à publier un JSON, à définir votre type de contenu et votre longueur de contenu en conséquence si vous enregistrez des données différentes.

// NB:- node's http client API has changed since this was written
// this code is for 0.4.x
// for 0.6.5+ see http://nodejs.org/docs/v0.6.5/api/http.html#http.request

var http = require('http');

var data = JSON.stringify({ 'important': 'data' });
var cookie = 'something=anything'

var client = http.createClient(80, 'www.example.com');

var headers = {
    'Host': 'www.example.com',
    'Cookie': cookie,
    'Content-Type': 'application/json',
    'Content-Length': Buffer.byteLength(data,'utf8')
};

var request = client.request('POST', '/', headers);

// listening to the response is optional, I suppose
request.on('response', function(response) {
  response.on('data', function(chunk) {
    // do what you do
  });
  response.on('end', function() {
    // do what you do
  });
});
// you'd also want to listen for errors in production

request.write(data);

request.end();

Ce que vous envoyez dans le Cookie La valeur doit vraiment dépendre de ce que vous avez reçu du serveur. L’écriture de Wikipedia sur ce genre de choses est plutôt bonne: http://en.wikipedia.org/wiki/HTTP_cookie#Cookie_attributes


47
2018-01-03 02:03



L'utilisation de http.createClient est maintenant obsolète. Vous pouvez passer les en-têtes dans la collection d'options comme ci-dessous.

var options = { 
    hostname: 'example.com',
    path: '/somePath.php',
    method: 'GET',
    headers: {'Cookie': 'myCookie=myvalue'}
};
var results = ''; 
var req = http.request(options, function(res) {
    res.on('data', function (chunk) {
        results = results + chunk;
        //TODO
    }); 
    res.on('end', function () {
        //TODO
    }); 
});

req.on('error', function(e) {
        //TODO
});

req.end();

30
2018-04-14 09:17



Vous pouvez le faire en utilisant Demander, un client HTTP très simple et cool que j'ai écrit pour nodeJS, il prend en charge l'utilisation facile des cookies et prend également en charge la mise en cache.

Pour effectuer une demande avec un cookie attaché, procédez comme suit:

var requestify = require('requestify');
requestify.post('http://google.com', {}, {
    cookies: {
        sessionCookie: 'session-cookie-data'   
    }
});

1
2017-07-18 18:22