簡體   English   中英

nodejs cookie 不會從 request.post 持續到后續 request.get 調用

[英]nodejs cookie not persist from request.post to a follow up request.get call

使用 NodeJS,登錄后在默認瀏覽器中打開受保護的網頁。 這是代碼分解。

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
            } 

    });

所以,從 post 調用中,我在響應頭中得到了 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' ]

然后,set-cookie 信息在后續的 http.get 調用中丟失,您無法從新的響應頭中找到它,見下文

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

我正在使用 cookieJar 來獲取/設置 cookie,我將 followAllRedirects 設置為 false,所以,我期待,cookie 將延續到下一次調用。 但是,事實並非如此。

有任何想法嗎? 謝謝

通過設置個人 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')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM