【发布时间】:2016-04-23 22:18:59
【问题描述】:
我正在使用request 包来创建我的服务器端请求。我编写了身份验证中间件,用于检查所有请求的 cookie/会话 ID。因此,有没有办法将用户的 cookie 作为请求的一部分包含在内?这是我当前的代码:
var cookie = parseCookie.parseCookie(req.headers.cookie);
request('http://localhost:3000/users/api', function(error, response, body) {
console.log(body); //this console.logs my login page since requests w/o valid cookies get redirected to login
res.render('../views/admin');
});
目前,这会在控制台中返回“未找到 cookie”。但是,如果我关闭身份验证中间件,上面的代码将按预期工作。
附加信息:
我想要的 cookie 是位于浏览器上的最终用户的 cookie。最终用户的 cookie 由应用在用户登录时创建。
更新 - 解决方案尝试 1:
我从文档中试过这个:
var cookie = parseCookie.parseCookie(req.headers.cookie);
var cookieText = 'sid='+cookie;
var j = request.jar();
var cookie = request.cookie(cookieText);
var url = 'http://localhost:3000/users/api';
j.setCookie(cookie, url);
request({url: url, jar: j}, function(error, response, body) {
request('http://localhost:3000/users/api');
});
但是,控制台仍然返回“未找到 cookie”
有人可以帮忙吗?
提前致谢!
【问题讨论】:
-
您将有更多关于您要发送的 cookie 的解释?最终用户的 cookie 存储在他们的浏览器中,并与特定浏览器和特定域唯一相关联,并与从浏览器到该域的任何请求一起发送到该域。请描述您所询问的 cookie。如果 cookie 与您的服务器所在的域不同,那么您的服务器将无法访问该 cookie。
-
@jfriend00 - 我更新了我的问题。谢谢!
-
cookie 是在哪个域和端口上创建的?您的服务器在哪个域和端口上?
-
@jfriend00 域和端口分别是 localhost:3000。我用我尝试过的解决方案更新了我的问题..
-
运行问题中代码的服务器是什么域和端口。这很重要,因为浏览器将 cookie 与特定服务器相关联,并以这种方式保护 cookie。我正在尝试找出 cookie 属于哪个服务器,以及您尝试在哪个服务器上获取 cookie 以便您可以发送它?
标签: javascript node.js cookies request