简体   繁体   English

Cookie不与request.js一起发送

[英]Cookie not sending with request.js

So I had a API up and running however I decided to switch from using nano to just using request . 所以我启动并运行了API,但我决定从使用nano切换到仅使用请求 However I for some reason can't seem to get the cookie to send back to the server now. 但是我出于某种原因似乎无法将cookie现在发送回服务器。 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);
});

As you can see I'm able to get and set the cookie however I'm not authorized on the GET request. 正如您所看到的,我能够获取并设置cookie但是我没有获得GET请求的授权。 I can't seem to figure out what I'm doing wrong. 我似乎无法弄清楚我做错了什么。 Any advice or help would be greatly appreciated. 任何建议或帮助将不胜感激。

Requests are asynchronous, so your two requests are made at the same time (before your cookieJar is set up). 请求是异步的,因此您的两个请求是在同一时间建立的(在您的cookieJar设置之前)。 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);
    });
});

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM