2011-07-30 16 views
8

Estoy escribiendo un cliente HTTP para leer desde facebook usando Node.js y usando el siguiente código:Problema con petición HTTP GET en el nodo js

var http = require('http'); 

var options = { 
    host: 'www.fb.com', 
    path: '/', 
    "user-agent": "node.js" 
}; 

http.get(options, function(res) { 
    console.log("Got response: " + res.statusCode); 
    console.log(res.headers); 
}).on('error', function(e) { 
console.log("Got error: " + e.message); 
}); 

En mi navegador, este devuelve un redireccionamiento 301 con la ubicación de www.facebook.com, sin embargo, en node.js obtengo una respuesta 302 con una ubicación de www.fb.com/common/browser.php. Lo probé con la última versión del nodo y todavía arroja este error.

Realmente agradecería un poco de ayuda con esto, Gracias.

+1

Me di cuenta de cuál es el problema. No estaba usando el http.client para realizar la solicitud. Supongo que el cliente maneja la respuesta de keepalive y las cookies y las abstrae. HTTP GET envía una nueva solicitud cada vez, y el estado no se mantiene entre las solicitudes. Entonces fb.com debe estar haciendo algo así como, si la cookie no se establece, redirija a fb.com y configure la cookie. Tal vez necesite algo más de iluminación aquí. Pero moral de la historia ... use http.client para hacer solicitudes. Obtendrás el comportamiento correcto – user868459

Respuesta

3

Este dosent parece ser un error de node.js Hice una solicitud a fb.com en curl y recibí el mismo redireccionamiento.

es probable que tenga que decisión basada en el agente de usuario ... tal vez se puede utilizar el agente de usuario de un navegador: D

26
var request_options = 
{ 
    host: 'www.fb.com', 
    headers: {'user-agent': 'Mozilla/5.0'}, 
    path: '/' 
}; 

Establecer la opción de solicitud de esta manera debería funcionar.

Cuestiones relacionadas