55 votes

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

J'ai un node.js Connecter serveur qui vérifie la demande de cookies. Pour le tester dans le nœud, j'ai besoin d'un moyen d'écrire une demande d'un client et de joindre un cookie pour elle. Je comprends que les Requêtes HTTP, le 'témoin' de l'en-tête, mais je ne suis pas sûr de la façon de les mettre et de les envoyer -- j'ai aussi besoin d'envoyer des données POST dans la même demande, je suis actuellement à l'aide danwrong du module restler, mais il ne semble pas permettez-moi d'ajouter que d'en-tête.

Toutes les suggestions sur comment je peux faire une demande au serveur avec les deux codé en dur cookie, et les données POST?

55voto

RandomEtc Points 1321

Voici comment je pense que vous faites une requête POST avec des données et un cookie en utilisant simplement le nœud http bibliothèque. Cet exemple est l'affichage JSON, définissez votre content-type et content-length en conséquence, si vous publiez 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 l' Cookie de la valeur doit vraiment dépendre de ce que vous avez reçu à partir du serveur. Wikipedia l'écriture de ce genre de choses est assez bonne: http://en.wikipedia.org/wiki/HTTP_cookie#Cookie_attributes

48voto

ankitjaininfo Points 4395

L'utilisation de http.createClient est désormais déconseillée. Vous pouvez passer des 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();
 

1voto

ranm8 Points 226

Vous pouvez le faire en utilisant Requestify , un client HTTP très simple et cool que j'ai écrit pour nodeJS, il prend en charge une utilisation facile des cookies et il 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'   
    }
});
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X