Jak utworzyć żądanie klienta HTTP za pomocą pliku cookie?
Mam węzeł.serwer js Connect, który sprawdza pliki cookie żądania. Aby przetestować go w node, potrzebuję sposobu na napisanie żądania klienta i dołączenie do niego pliku cookie. Rozumiem, że żądania HTTP mają do tego nagłówek "cookie", ale nie jestem pewien, jak go ustawić i wysłać-muszę również wysłać dane postu w tym samym żądaniu, więc obecnie używam modułu restler danwronga, ale nie pozwala mi dodać tego nagłówka.
Wszelkie sugestie jak Mogę złożyć prośbę do serwera z mocno zakodowanym ciasteczkiem i danymi pocztowymi?
3 answers
Oto jak myślę, że robisz żądanie POST z danymi i ciasteczkiem używając tylko biblioteki http węzła. Ten przykład to publikowanie JSON, odpowiednio ustaw typ treści i długość treści, jeśli publikujesz różne dane.
// 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();
To, co wysyłasz w wartości Cookie
powinno naprawdę zależeć od tego, co otrzymałeś z serwera. Zapis Wikipedii o tym jest całkiem niezły: http://en.wikipedia.org/wiki/HTTP_cookie#Cookie_attributes
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-07 23:35:25
Użycie http.createClient
jest obecnie przestarzałe. Możesz przekazać nagłówki w options collection, jak poniżej.
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();
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-14 09:17:42
Możesz to zrobić za pomocą Requestify , bardzo prostego i fajnego klienta HTTP, który napisałem dla nodeJS, obsługuje łatwe korzystanie z plików cookie, a także obsługuje buforowanie.
Aby wykonać żądanie z dołączonym ciasteczkiem, wykonaj następujące czynności:
var requestify = require('requestify');
requestify.post('http://google.com', {}, {
cookies: {
sessionCookie: 'session-cookie-data'
}
});
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-18 18:22:56