2015-09-12 62 views
5

node.js dosyasını öğrenmeye çalışıyorum ve bir sitede oturum açmak için bir yardımcı program üzerinde çalışıyorum ve daha sonra bazı bilgileri çıkarıyorum. Yönlendirmelerin belgelerde "otomatik olarak çalışması" gerektiğini okudum, ancak işe yaramayacağım. İlknode.js isteği ile yönlendirmeyi izleyin

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

, ben vücut boş bir respone.statusCode == 302 veren bir POST yapmak. Gövdenin yönlendirilmiş sayfayı içermesini bekledim.

Sonra "yeni" url, response.headers ['location'] içinde bulundu. Bunu kullanırken, gövde beklediğim sayfa yerine "giriş yapmamış" bir sayfa içeriyor.

Bunu nasıl yapacağınızı bilen var mı?

+0

eylem bu ne anlama senin POST Yönlendermelerin izleyin, sizin config aşağıdaki ekleyin? Dosya adınız nedir? –

+0

Bu, sunucunun beklediği bazı form verileridir. – kaze

+0

Evet. uzatma ile doğru mu? –

cevap

15

Yönlendirmeler, yalnızca GET istekleri için varsayılan olarak açıktır.

followAllRedirects: true 

Güncelleme Kod: = "login"

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

Güzel! İlk çalıştığında followAllRedirects ile deneyin! – kaze

+0

Bu, 'request-promise' ile çalışmaz gibi görünmüyor - benim '.then()' bloğu hiç ateş etmiyor. – chovy

İlgili konular