我是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;
在谷歌Chrome控制台运行时,它是succsessfuly替换.
在你的标题中尝试直接放入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' }
我有同样的问题,@ 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数据和我的请求函数之间的混合.