2012-03-31 8 views
0

ホスト名を送信せずに要求を行う:Node.jsのhttp.getは()私はこのようになりますいくつかのNode.jsコード持って

Updater.prototype.poll= function(callback) { 
var options = { 
    host: api_host, 
    port: 80, 
    path: update_path, 
    method: 'GET', 
    agent: false, 
    headers: [{'accept-encoding': '*;q=1,gzip=0'}] 
}; 

console.log('Polling'); 
var req = http.get(options, function(res) { 
    //other stuff here... 
}); 

を};

問題が送信されると、サーバーは400 Bad Request - Invalid Hostnameを返します。私はwiresharkでTCPストリームを盗聴しましたが、それはHostのHTTP要求の一部を送信するのではなく、代わりにundefined: undefinedのような行を生成しているようです。私はapi_host変数が正しく設定されていると確信しています(ハードコードされた文字列で試したことさえあります)。私もhostの代わりにhostnameを使ってみました。このように行動することが知られている理由はありますか?

+0

ノードのどのバージョンですか? –

+0

オプションの価値は何ですか? –

答えて

0

httpリクエストを作成する新しいスタイルで発生したバグを確認しているようです。私がテストしたことから、httpヘッダー/オプションでコンテンツタイプを設定することと関係があります。

私は古い方法(つまりhttp.createClient())に戻ってきました。だからそれは私がお勧めしたいです

1

まず、node.js docsページでサンプルを試してみましょう。それはあなたのためにまったく機能しますか?ここでホストを交換するとどうなりますか?

var options = { 
    host: 'www.google.com', 
    port: 80, 
    path: '/index.html' 
}; 

http.get(options, function(res) { 
    console.log("Got response: " + res.statusCode); 
}).on('error', function(e) { 
    console.log("Got error: " + e.message); 
}); 

第2に、Requestを見ましたか?これは、(jQueryに似た)もっと親しみやすい構文でこのようなことを行うための標準モジュールと同じくらい良いことです。

+0

最後に、ヘッダーを定義する私のやり方でpbでした(配列表記 'headers:[...]'からオブジェクト表記 'headers:{...}'に変更したときに修正されました – matei

関連する問題