web-dev-qa-db-fra.com

Comment obtenir les cookies du module de requête dans node.js?

function getCookies(){

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

Résultat  

{ 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' }

Je veux récupérer la valeur de ' set-cookie ' dans les en-têtes de réponse. Comment le ramasser? Y at-il un moyen simple et cool? Devrais-je utiliser pour une déclaration de filedkey, ou. Que devrais-je faire? Je ne sais pas si je suis totalement novice en Javascript. Merci...

15
Juntae
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);
        }
    })
}

alors vous pouvez appeler:

getCookies(function(err, res){
    if(!err)
       console.log(res)
})
10
BlackMamba

En général, avec Node, si le problème est commun, quelqu'un a déjà pris la peine d'écrire et de publier quelque chose sur NPM.

Par exemple, request-cookies !

En particulier, je pense que vous trouverez la méthode toJSON() plus utile, bien que la documentation du paquetage soit plutôt légère. Vous pouvez consulter les tests pour des exemples de travail.

Cela dit, request possède déjà une documentation détaillée sur les cookies. Vous trouverez peut-être que cela répond à vos besoins:

Les cookies sont désactivés par défaut (sinon, ils seraient utilisés dans les requêtes suivantes). Pour activer les cookies, définissez jar sur true (dans defaults ou options).

(Faites défiler vers le bas du readme pour trouver les informations sur les cookies).

7
brandonscript

Voici comment vous pouvez utiliser des cookies de requête comme @brandonscript a dit.

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);
  }
});

Exemple de sortie de goolge:

NID 98=FfYHDY9-40JzE78qxIpaMugODJ4y4zJIydluKUffvh1lDs70DYk7vrlmw2ca2Gd54ywx5WV44Utz9EdLOdFE6IcW2BUGfiVpHZx3kWh69tT_eWlXZTiFkRo7TVr_9WWH 2017-09-08T04:22:41.000Z
6
thanhpk

Si vous ne vous souciez pas du contenu de la cookie et que vous voulez simplement l'utiliser, essayez cette approche simple: 

var request = require('request');
var j = request.jar();
var request = request.defaults({jar:j});
request('http://www.google.com', function () {
  request('http://images.google.com', function (error, response, body){
     // this request will will have the cookie which first request received
     // do stuff
  });
});
0
BlackBeard