Cookie不与request.js一起发送 [英] Cookie not sending with request.js

查看:194
本文介绍了Cookie不与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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆