在NodeJs http请求中传递cookie

 拉桑357_584 发布于 2023-01-08 08:20

我是NodeJs的新手.我正在尝试发出http请求并传递cookie.我已经阅读了有关它的stackoverflow上的所有线程,并编写了一段理论上应该工作的代码.但是,事实并非如此.

我想要做的是将带有商店代码的cookie发送到一个在线商店,它将向我显示有关这个商店的信息.如果没有cookie,则显示默认div要求选择商店.

这是我的代码:

var request = require('request'),
    http = require('follow-redirects').http,
    request = request.defaults({
        jar: true
    });

var cookieString = 'MC_STORE_ID=66860; expires=' + new Date(new Date().getTime() + 86409000);
var str = '';
//var uri = 'example.de';

//var j = request.jar();
var cookie = request.cookie(cookieString);
j.setCookie(cookie, uri);

var options = {
    hostname: 'example.de',
    path: '/pathexample',
    method: 'GET',
    headers: {
        'User-Agent': 'Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11',
            'Cookie': cookie,
            'Accept': '/',
            'Connection': 'keep-alive'
    }
    //,jar: j
};

http.request(options, function (resp) {
    resp.setEncoding('utf8');
    console.log(resp.headers);
    if (resp.statusCode) {
        resp.on('data', function (part) {
            str += part;
        });
        resp.on('end', function (part) {
            console.log(str);
        });

        resp.on('error', function (e) {
            console.log('Problem with request: ' + e.message);
        });
    }
}).end(str);

我假设我的请求会发送和接受cookie,但事实并非如此.我也试过了jar.我在代码中对它进行了评论.但是,它似乎也不适合我.当我这样做时,console.log(resp.headers)我会看到原始的饼干,但不是我的.有人能给我一个暗示吗?

cookie结构是正确的.当我document.cookie=cookie;在谷歌C​​hrome控制台运行时,它是succsessfuly替换.

2 个回答
  • 在你的标题中尝试直接放入cookieString

    headers: {
        'User-Agent': 'Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11',
        'Cookie': cookieString,
        'Accept': '/',
        'Connection': 'keep-alive'
    }
    

    2023-01-08 08:26 回答
  • 我有同样的问题,@ Ricardo帮助我搞清楚.我从标题中删除了jar密钥

    //Set the cookie instead of setting into header
    var cookie = request.cookie('MC_STORE_ID=66860');
    
    
    // Set the headers for the request
    var headers = {
        'Content-Type': 'application/json',
        'Content-Length': Buffer.byteLength(post_data),
        'Cookie': cookie
    };
    // Configure the request
    var options = {
        url: requestObj["URL"],
        method: 'POST',
        headers: headers
    };
    
    // Start the request
    request(options, function (error, response, body) {
        if (!error && response.statusCode === 200) {
            // Print out the response body
            cb(null, {status: 0, statusDsc: "success", data: body});
        } else {
            cb(error, {status: 2, statusDsc: JSON.stringify(error)});
        }
    });
    

    这是你的cookie数据和我的请求函数之间的混合.

    2023-01-08 08:28 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有