使用NodeJS,opn在登录后在默认浏览器中打开受保护的网页。这是代码分解。
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' ]
然后,set-cookie信息在后续的http.get调用中丢失,你无法从新的响应头中找到它,见下文
'set-cookie': [ 'JSESSIONID=8CB721B97EE3C07FAD481A56A84B4D82.protectedpage-111-22-333-44; Path=/ProtectedPage; HttpOnly' ]
我正在使用cookieJar来获取/设置cookie,我将followAllRedirects设置为false,所以,我期待,cookie将转移到下一个调用。但是,事实并非如此。
任何想法?感谢
答案 0 :(得分:1)
通过设置个人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')