2015-12-11 13 views
9
function getCookies(){ 

    request('http://google.com', function (error, response, body) { 
     if (!error && response.statusCode == 200) { 
      console.log(response.headers); 
     } 
    }) 
} 

RisultatoCome ottenere i cookie dal modulo di richiesta in node.js?

{ date: 'Fri, 11 Dec 2015 07:15:50 GMT', 
    expires: '-1', 
    'cache-control': 'private, max-age=0', 
    'content-type': 'text/html; charset=EUC-KR', 
    p3p: 'CP="This is not a P3P policy! See https://www.google.com/support/accounts/answer/151657?hl=en for more info."', 
    server: 'gws', 
    'x-xss-protection': '1; mode=block', 
    'x-frame-options': 'SAMEORIGIN', 
    'set-cookie': 
    [ 'PREF=ID=1111111111111111:FF=0:TM=1449818150:LM=1449818150:V=1:S=Q3BB20FA6TkaZymd; expires=Thu, 31-Dec-2015 16:02:17 GMT; path=/; domain=.google.co.kr', 
    'NID=74=hnriWxk7N9jHtP5W0qgaxrwD1YuNKOmJg748ucxWilu9jaqHJVovfkYdvMr0tlp-VToID5cdTNDSXNXqr4M8umJ9traab67x2xZKfu3hJbsBRXeVvyiCOcwZ8bkXNcU4; expires=Sat, 11-Jun-2016 07:15:50 GMT; path=/; domain=.google.co.kr; HttpOnly' ], 
    'accept-ranges': 'none', 
    vary: 'Accept-Encoding', 
    connection: 'close' } 

voglio prendere valore di 'set-cookie' dal intestazioni di risposta. Come prenderlo? C'è un modo semplice e divertente? Dovrei usare per la dichiarazione da filedkey, o. Cosa dovrei fare? Non so di essere totalmente novizio su Javascript. Grazie ...

risposta

7
function getCookies(callback){ 

    request('http://google.com', function (error, response, body) { 
     if (!error && response.statusCode == 200) { 
      return callback(null, response.headers['set-cookie']); 
     } else { 
      return callback(error); 
     } 
    }) 
} 

quindi è possibile chiamare:

getCookies(function(err, res){ 
    if(!err) 
     console.log(res) 
}) 
+0

wow, davvero? questo è un modo molto meno amichevole per ottenere i cookie rispetto a quelli espressi sul lato server dove posso solo dire "req.cookies.cookieName" – Michael

6

generale con Node, se si tratta di un problema comune da risolvere, qualcuno ha già preso la briga di scrivere e pubblicare qualcosa sul NPM.

Ad esempio, request-cookies!

In particolare, penso che troverete il metodo toJSON() più utile, anche se devo ammettere che la documentazione del pacchetto è piuttosto leggera. Puoi dare un'occhiata allo tests per alcuni esempi di lavoro.

Detto questo, richiesta è già un po 'di un'ampia documentazione sui cookie, come pure - si potrebbe trovare questo si adatta alle vostre esigenze:

I cookie sono disabilitati di default (altrimenti, sarebbero stati utilizzati in richieste successive). Per abilitare i cookie, impostare jar su true (in defaults o options).

(Scorrere fino alla fine di readme per trovare i bit sui cookie).

4

Ecco come è possibile utilizzare i cookie di richiesta come dice @brandonscript.

var request = require('request'); 
var Cookie = require('request-cookies').Cookie; 

request.get('https://google.com', function(err, response, body) { 
    var rawcookies = response.headers['set-cookie']; 
    for (var i in rawcookies) { 
    var cookie = new Cookie(rawcookies[i]); 
    console.log(cookie.key, cookie.value, cookie.expires); 
    } 
}); 

output prodotto da Goolge:

NID 98=FfYHDY9-40JzE78qxIpaMugODJ4y4zJIydluKUffvh1lDs70DYk7vrlmw2ca2gD54ywx5WV44Utz9EdLOdFE6IcW2BUGfiVpHZx3kWh69tT_eWlXZTiFkRo7TVr_9WWH 2017-09-08T04:22:41.000Z