2011-07-30 43 views
8

Im viết một khách hàng http để đọc từ facebook sử dụng Node.js và sử dụng đoạn mã sau:Vấn đề với http GET yêu cầu trên nút 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); 
}); 

Trong trình duyệt của tôi, điều này trả về một 301 redirect xung quanh vị trí www.facebook.com, tuy nhiên trong node.js tôi nhận được phản hồi 302 với vị trí www.fb.com/common/browser.php. Tôi đã thử với phiên bản mới nhất của nút và nó vẫn ném lỗi này.

Tôi thực sự đánh giá cao một số trợ giúp với điều này, Cảm ơn bạn.

+1

Tôi nhận ra vấn đề là gì .. Tôi đã không sử dụng http.client để thực hiện yêu cầu. Tôi đoán khách hàng sẽ xử lý phản hồi và cookie và tóm tắt nó. HTTP GET gửi yêu cầu mới mỗi lần và trạng thái không được duy trì giữa các yêu cầu. Vì vậy, fb.com phải làm một cái gì đó như thế, nếu cookie không đặt chuyển hướng đến fb.com và đặt cookie. Tôi có thể cần thêm chút giác ngộ ở đây. Nhưng đạo đức của câu chuyện ... sử dụng http.client để đưa ra yêu cầu. Bạn sẽ có được hành vi đúng – user868459

Trả lời

3

Hiệu ứng này dường như là lỗi của node.js Tôi đã gửi yêu cầu đến fb.com trong curl và tôi nhận được cùng một chuyển hướng.

Nó có thể làm cho rằng quyết định dựa trên user agent ... có lẽ bạn có thể sử dụng user agent của một trình duyệt: D

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

Đặt tùy chọn này yêu cầu theo cách này nên làm việc.

Các vấn đề liên quan