2012-09-06 4 views

Antwort

13

Mit der erstaunlichen request Bibliothek sind Cookies standardmäßig aktiviert. Sie können also Ihre eigene wie senden (von der Github Seite genommen):

var j = request.jar() 
var cookie = request.cookie('your_cookie_here') 
j.add(cookie) 
request({url: 'http://www.google.com', jar: j}, function() { 
    request('http://images.google.com') 
}) 
+1

Aber wie sieht der Code nur mit Standardmodulen aus? – jiyinyiyong

+0

Ah: nicht sicher. Ich habe nie versucht, den Standard-HTTP-Client für meine Anfragen zu verwenden. – Femi

+0

Ich habe gerade angefangen, mehr über HTTP zu lernen. Ich denke, wenn das Standard-HTTP-Modul die Methode dafür hat, kann ich mehr Details darüber erfahren. – jiyinyiyong

4

Wenn Sie es mit der nativen http:request() Methode tun mögen, können Sie den entsprechenden Set-Cookie Header gesetzt (eine HTTP-Referenz für das, was sie sehen sollte aussehen) in der headers Mitglied der options Argument; Es gibt keine spezifischen Methoden im nativen Code für den Umgang mit Cookies. Siehe den Quellcode in Mikeals request-Bibliothek und/oder cookieParser-Code in connect, wenn Sie konkrete Beispiele benötigen.

Aber Femi hat mit ziemlicher Sicherheit Recht: Der Umgang mit Cookies ist voll von eher nickpicky Details und Sie werden fast immer besser mit Code, der bereits geschrieben und vor allem getestet wurde. Wenn Sie versuchen, dieses spezielle Rad neu zu erfinden, werden Sie wahrscheinlich Code entwickeln, der die meiste Zeit zu funktionieren scheint, aber gelegentlich und unvorhersehbar auf mysteriöse Weise versagt.

0
var jar = request.jar(); 
const jwtSecret = fs.readFileSync(`${__dirname}/.ssh/id_rsa`, 'utf8'); 
const token = jwt.sign(jwtPayload, jwtSecret, settings); 
jar.setCookie(`any-name=${token}`, 'http://localhost:12345/'); 
const options = { 
    method: 'GET', 
    url: 'http://localhost:12345', 
    jar, 
    json: true 
}; 
request(options, handleResponse); 
+0

Bitte fügen Sie weitere Beschreibungen und/oder Informationen zu Ihrer Antwort hinzu und wie das Problem gelöst wird, damit andere es verstehen können, ohne nach einer Klärung zu fragen – koceeng

Verwandte Themen