リクエストのCookieをチェックするnode.js Connectサーバーを持っています。ノード内でテストするには、クライアントリクエストを作成し、Cookieを添付する方法が必要です。 HTTPリクエストにはこのための「Cookie」ヘッダーがあることを理解していますが、それを設定して送信する方法がわかりません-同じリクエストでPOSTデータを送信する必要があるため、現在、danwrongのrestlerモジュールを使用していますが、そのヘッダーを追加できないようです。
ハードコードされたcookieとPOST= data?
この回答は非推奨です。最新のソリューションについては、@ ankitjaininfoの回答 下 をご覧ください
ここでは、ノードHTTPライブラリのみを使用して、データとCookieを使用してPOSTリクエストを作成します。この例ではJSONを投稿します。データ。
// 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
値で送信するものは、実際にサーバーから受け取ったものに依存するはずです。 Wikipediaのこのような記事は非常に優れています。 http://en.wikipedia.org/wiki/HTTP_cookie#Cookie_attributes
の用法 http.createClient
は廃止されました。以下のように、オプションコレクションでヘッダーを渡すことができます。
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クライアントであり、Cookieの簡単な使用をサポートし、キャッシュもサポートします。
Cookieを添付してリクエストを実行するには、次のようにします。
var requestify = require('requestify');
requestify.post('http://google.com', {}, {
cookies: {
sessionCookie: 'session-cookie-data'
}
});