2017-10-15 130 views
1

使用NodeJS,opn在登錄後在默認瀏覽器中打開受保護的網頁。這裏是代碼分解。nodejs cookie不會從request.post持續到後續請求。致電

var loginActionUrl = "http://example.com/Logon.do"; 

    var protectedPageUrl = "http://example.com/protected_page.html"; 

    request.post({ 
     url: loginActionUrl, 
     jar: jar.getJar(), 
     followAllRedirects: false, 
     body: 'username=' + username + '&password=' + password 

     }, function (err, res, body) { 
      //enter code here 
      request.get({ 
       url:protectedPageurl, 
       method: 'get', 
       jar: jar.getJar() 
      }, function(err, res, body) { 
       // todo 2 
      } 

    }); 

因此,從通話結束後,我在響應標題中得到了set-cookie。

'set-cookie': 
    [ 'X-Uaa-Csrf=JFrlPA; Expires=Thu, 01-Jan-1970 00:00:10 GMT; HttpOnly', 
    'X-Uaa-Csrf=RmXmOa; Expires=Mon, 16-Oct-2017 18:24:22 GMT; HttpOnly', 
    'SESSION=b0536096-e184-4f42-a68f-ff8f58802adc; Path=/Logon/; HttpOnly' ] 

然後,設置Cookie信息迷失在跟進http.get打電話,你不能從新的響應頭找到它,請參閱下面

'set-cookie': [ 'JSESSIONID=8CB721B97EE3C07FAD481A56A84B4D82.protectedpage-111-22-333-44; Path=/ProtectedPage; HttpOnly' ] 

我使用cookieJar爲了獲取/設置cookie,我將followAllRedirects設置爲false,所以,我期待的是,cookie將繼續下一次調用。但事實並非如此。

有什麼想法?感謝

回答

0

通過建立個人cookieJar

// init personal jar 
var cookiejar = request.jar(); 
request.defaults({jar:cookieJar}); 

// reset the jar 
cookieJar = request.jar() 

// if want to add extra to the cookie, 
cookieJar.setCookie('key=value') 
修復了這個問題