Cookie不与request.js一起发送 [英] Cookie not sending with request.js
问题描述
所以我有一个API运行,但我决定从使用 nano 切换到只使用< a href =https://github.com/mikeal/request =nofollow>请求。然而我由于某种原因似乎不能得到cookie发送回服务器现在。下面是我测试的代码示例。
So I had a API up and running however I decided to switch from using nano to just using request. However I for some reason can't seem to get the cookie to send back to the server now. Here's an example of the code I've been testing.
var request = require('request')
var cookieJar = request.jar();
var myCookie;
request({
method: 'POST',
uri: 'http://127.0.0.1:5984/_session',
form: {
name: 'test',
password: 'test123'
}
},
function(err, res, body) {
if (err) { console.log(err) };
console.log(res.statusCode);
console.log(res.headers);
console.log(body);
myCookie = request.cookie(res.headers['set-cookie'][0]);
cookieJar.setCookie(myCookie, 'http://127.0.0.1:5984/_session');
});
request({
method: 'GET',
uri: 'http://127.0.0.1:5984/db',
jar: cookieJar
},
function(err, res, body) {
if (err) { console.log(err) };
console.log(cookieJar);
console.log(res.statusCode);
console.log(res.headers);
console.log(body);
});
正如你所看到的,我能够获取和设置cookie, GET请求。我似乎不知道我做错了什么。
As you can see I'm able to get and set the cookie however I'm not authorized on the GET request. I can't seem to figure out what I'm doing wrong. Any advice or help would be greatly appreciated.
推荐答案
请求是异步的,因此您的两个请求是同时发出的你的cookieJar设置)。请改为尝试:
Requests are asynchronous, so your two requests are made at the same time (before your cookieJar is set up). Try this instead:
var request = require('request')
request({
method: 'POST',
uri: 'http://127.0.0.1:5984/_session',
form: {
name: 'test',
password: 'test123'
}
},
function(err, res, body) {
if (err) { return console.log(err) };
console.log(res.statusCode);
console.log(res.headers);
console.log(body);
var myCookie = request.cookie(res.headers['set-cookie'][0]);
var cookieJar = request.jar();
cookieJar.setCookie(myCookie, 'http://127.0.0.1:5984/_session');
request({
method: 'GET',
uri: 'http://127.0.0.1:5984/db',
jar: cookieJar
},
function(err, res, body) {
if (err) { return console.log(err) };
console.log(cookieJar);
console.log(res.statusCode);
console.log(res.headers);
console.log(body);
});
});
这篇关于Cookie不与request.js一起发送的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!