2015-09-12 16 views
5

Tôi đang cố gắng tìm hiểu node.js và tôi đang làm việc trên một tiện ích để đăng nhập trên một trang web và sau đó trích xuất một số thông tin. Tôi đã đọc rằng các chuyển hướng nên "hoạt động tự động" trong tài liệu, nhưng tôi không thể làm cho nó hoạt động.Làm theo chuyển hướng với yêu cầu node.js

request({ 
    url: start_url, 
    method: 'POST', 
    jar: true, 
    form: { 
     action: 'login', 
     usertype: '2', 
     ssusername: '****', 
     sspassword: '****', 
     button: 'Logga in' 
    } 
}, function(error, response, body) { 
    if (error) { 
     console.log(error); 
    } else { 
     console.log(body, response.statusCode); 
     request(response.headers['location'], function(error, response, html) { 
      console.log(html); 
     }); 
    } 
}); 

Trước tiên, tôi gửi POST, cung cấp respone.statusCode == 302. Phần thân trống. Tôi hy vọng cơ thể chứa trang được chuyển hướng.

Sau đó, tôi tìm thấy url "mới", trong response.headers ['location']. Khi sử dụng, nội dung chỉ chứa trang "chưa đăng nhập" thay vì trang tôi đang mong đợi.

Bất kỳ ai biết cách thực hiện việc này?

+0

action = "login" điều này nghĩa là gì? Tên tệp của bạn là gì? –

+0

Đó chỉ là một số dữ liệu biểu mẫu mà máy chủ mong đợi. – kaze

+0

Có. là nó đúng với phần mở rộng? –

Trả lời

15

Chuyển hướng được bật theo mặc định cho các yêu cầu Chỉ nhận yêu cầu. Để thực hiện theo các chuyển hướng trong bạn POST, thêm dòng sau vào cấu hình của bạn:

followAllRedirects: true 

Mã Cập nhật:

request({ 
    url: start_url, 
    method: 'POST', 
    followAllRedirects: true, 
    jar: true, 
    form: { 
     action: 'login', 
     usertype: '2', 
     ssusername: '****', 
     sspassword: '****', 
     button: 'Logga in' 
    } 
}, function(error, response, body) { 
    if (error) { 
     console.log(error); 
    } else { 
     console.log(body, response.statusCode); 
     request(response.headers['location'], function(error, response, html) { 
      console.log(html); 
     }); 
    } 
}); 
+0

Đẹp! Làm việc trên thử đầu tiên với followAllRedirects! – kaze

+0

Điều này dường như không hoạt động với 'yêu cầu-lời hứa' -' .then() 'block doesnt 'của tôi không bao giờ cháy. – chovy

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