1

CloudFoundry で NodeJS アプリケーションを実行しています。これは、私が影響を与えていない既存の HTTP クライアントと組み合わせて使用​​することを目的としています。

この HTTP クライアントは、アプリケーションが依存している要求ヘッダーを送信しますが、ヘッダーのリストを反復処理すると、ヘッダーが欠落しています。対照的に、開発マシンで NodeJS アプリケーションを実行すると、これらのヘッダーが期待どおりにリストされます。

問題のヘッダーはアプリケーション固有であり、RFC ドキュメントで定義されておらず、'X-' で始まっていません。正確には、問題のクライアントは、ゲーム「EVE Online」のゲーム内ブラウザです。クライアントのヘッダーは接頭辞「eve_」が付いているため、「eve_trusted」が実際の例になります。

以下では、アンダースコア文字 ('_') が問題になる可能性があることを特定しました - アンダースコアのないその他の不明なヘッダーは渡されます。

リクエストの元のヘッダーに到達する方法はありますか?これは Cloud Foundry の機能リクエストでしょうか?それともクラウド サービス全般のロード バランサーの背後に置かれるとすぐにここで迷子になりますか?

4

1 に答える 1

1

問題を理解するのを助けるために、クライアントによって設定されたヘッダーを出力する単純なノードアプリを展開したので、curl を使用して任意の値を送信できました。コードは次のとおりです。

var http = require('http');
var util = require('util');

http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end(util.inspect(req.headers));
}).listen(3000);

私はこれをhttp://node-headers.cloudfoundry.comにデプロイしました。これを自分でテストしてください。しばらくの間、そのままにしておきます。次に、curl で次の構文を使用してリクエストを送信しました。

curl --header "CustomHeader: Hello" node-headers.cloudfoundry.com

これにより、次の出力が生成されました。

{ host: 'node-headers.cloudfoundry.com',
'x-forwarded-for': '80.175.199.28, 172.30.8.253',
connection: 'close',
'user-agent': 'curl/7.21.4 (universal-apple-darwin11.0) libcurl/7.21.4 OpenSSL/0.9.8r zlib/1.2.5',
accept: '*/*',
customheader: 'Hello',
'x-cluster-client-ip': '80.175.199.28' }

curl で送信したカスタム ヘッダーを確認できます。また、これを複数のインスタンスでテストしましたが、同じ結果が得られました。

ここで不足していることがあれば、お知らせください。喜んで問題を解決させていただきます。

于 2012-08-15T08:32:50.293 に答える