我正在CloudFoundry上运行NodeJS应用程序,该应用程序旨在与我不影响的现有HTTP客户端结合使用。
此HTTP客户端发送我的应用程序所依赖的请求标头,但是迭代标头列表会丢失它们。相反,在开发计算机上运行NodeJS应用程序会按预期列出这些标头。
有问题的标题是特定于应用程序的,不是由RFC文档定义的,也不是以“X-”开头。确切地说,所讨论的客户端是游戏“EVE Online”的游戏内浏览器。客户端的标题以前缀“eve_”命名,因此“eve_trusted”将是一个真实的例子。
下面我们确定下划线字符('_')是一个可能的问题 - 没有下划线的其他未知标题会被传递。
有没有办法获得请求的原始标头,这是Cloud Foundry的功能请求还是我一旦在云服务上放置负载平衡器后就丢失了?< / p>
答案 0 :(得分: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发送的自定义标题。我也用多个实例对此进行了测试,结果相同。
如果我在这里遗失了某些内容,请告诉我,我将非常乐意与您解决问题。