在CloudFoundry上,HTTP请求标头似乎已被过滤。有办法接收它们吗?

时间:2012-08-15 07:25:37

标签: http-headers cloudfoundry

我正在CloudFoundry上运行NodeJS应用程序,该应用程序旨在与我不影响的现有HTTP客户端结合使用。

此HTTP客户端发送我的应用程序所依赖的请求标头,但是迭代标头列表会丢失它们。相反,在开发计算机上运行NodeJS应用程序会按预期列出这些标头。

有问题的标题是特定于应用程序的,不是由RFC文档定义的,也不是以“X-”开头。确切地说,所讨论的客户端是游戏“EVE Online”的游戏内浏览器。客户端的标题以前缀“eve_”命名,因此“eve_trusted”将是一个真实的例子。

下面我们确定下划线字符('_')是一个可能的问题 - 没有下划线的其他未知标题会被传递。

有没有办法获得请求的原始标头,这是Cloud Foundry的功能请求还是我一旦在云服务上放置负载平衡器后就丢失了?< / p>

1 个答案:

答案 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发送的自定义标题。我也用多个实例对此进行了测试,结果相同。

如果我在这里遗失了某些内容,请告诉我,我将非常乐意与您解决问题。