Ik heb een node.js Connect-server die de cookies van het verzoek controleert. Om het binnen het knooppunt te testen, heb ik een manier nodig om een klantverzoek te schrijven en er een cookie aan toe te voegen. Ik begrijp dat HTTP-verzoeken hiervoor de ‘cookie’-header hebben, maar ik weet niet zeker hoe ik het moet instellen en verzenden – ik moet ook POST-gegevens in hetzelfde verzoek verzenden, dus ik gebruik momenteel de restler-module van danwrong, maar het lijkt erop dat ik die kop niet kan toevoegen.
Enige suggesties over hoe ik een verzoek kan indienen bij de server met zowel een hard-coded cookie als POST-gegevens?
Antwoord 1, autoriteit 100%
Dit antwoord is verouderd, zie het antwoord van @ankitjaininfo hierondervoor een modernere oplossing
Zo denk ik dat je een POST-verzoek doet met gegevens en een cookie met alleen de http-bibliotheek van het knooppunt. Dit voorbeeld is het posten van JSON, stel uw inhoudstype en inhoudslengte overeenkomstig in als u verschillende gegevens plaatst.
// 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();
Wat u in de Cookie
-waarde verzendt, moet echt afhangen van wat u van de server hebt ontvangen. Wikipedia’s beschrijving van dit spul is redelijk goed: http://en.wikipedia.org/wiki /HTTP_cookie#Cookie_attributes
Antwoord 2, autoriteit 87%
Het gebruik van http.createClient
is nu afgeschaft. U kunt Headers doorgeven in de optiesverzameling zoals hieronder.
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();
Antwoord 3, autoriteit 2%
Je kunt dat doen met Requestify, een heel eenvoudige en coole HTTP-client die ik voor nodeJS heb geschreven. ondersteunt eenvoudig gebruik van cookies en ondersteunt ook caching.
Als u een verzoek met een bijgevoegde cookie wilt uitvoeren, doet u het volgende:
var requestify = require('requestify');
requestify.post('http://google.com', {}, {
cookies: {
sessionCookie: 'session-cookie-data'
}
});