如何使用cookie创buildHTTP客户端请求?
我有一个node.js连接服务器,检查请求的cookie。 为了在节点内testing它,我需要一种方法来编写客户端请求并附加一个cookie。 我明白,HTTP请求有这个“cookie”头,但我不知道如何设置和发送 – 我也需要在同一个请求发送POST数据,所以我目前正在使用danwrong的restler模块,但似乎并没有让我添加该标题。
有关如何使用硬编码的cookie和POST数据向服务器发出请求的任何build议?
以下是我认为如何使用数据和cookie使用节点http库进行POST请求。 这个例子是发布JSON,如果你发布不同的数据,相应地设置你的内容types和内容长度。
// NB:- node's http client API has changed since this was written // this code is for 0.4.x // for 0.6.5+ see http://nodejs.org/docs/v0.6.5/api/http.html#http.request var http = require('http'); var data = JSON.stringify({ 'important': 'data' }); var cookie = 'something=anything' var client = http.createClient(80, 'www.example.com'); var headers = { 'Host': 'www.example.com', 'Cookie': cookie, 'Content-Type': 'application/json', 'Content-Length': Buffer.byteLength(data,'utf8') }; var request = client.request('POST', '/', headers); // listening to the response is optional, I suppose request.on('response', function(response) { response.on('data', function(chunk) { // do what you do }); response.on('end', function() { // do what you do }); }); // you'd also want to listen for errors in production request.write(data); request.end();
您发送的Cookie
值应该取决于您从服务器收到的内容。 维基百科的这个东西写得很好: http : //en.wikipedia.org/wiki/HTTP_cookie#Cookie_attributes
现在不推荐使用http.createClient
。 您可以按如下方式在选项集合中传递Headers。
var options = { hostname: 'example.com', path: '/somePath.php', method: 'GET', headers: {'Cookie': 'myCookie=myvalue'} }; var results = ''; var req = http.request(options, function(res) { res.on('data', function (chunk) { results = results + chunk; //TODO }); res.on('end', function () { //TODO }); }); req.on('error', function(e) { //TODO }); req.end();
您可以使用Requestify这个我为NodeJS编写的非常简单而酷的HTTP客户端来完成这个工作,它支持简单的使用cookies,并且也支持caching。
要使用附加的cookie执行请求,请执行以下操作:
var requestify = require('requestify'); requestify.post('http://google.com', {}, { cookies: { sessionCookie: 'session-cookie-data' } });