2016-11-21 26 views
-2

我看到,如果使用自定义HTTP标头名称,它们中的一些将被服务器接收,即filename,operation,但有些像databaseName未收到。任何想法为什么?我应该使用filenameoperation吗?哪个自定义HTTP头名称值得使用?

使用OpenShift平台和预配置的Node.js网络服务器。

+0

如果您发送带有这些标头的HTTP请求,并且它们没有最终进入服务器,则会出现两个可能的问题:非编译或错误配置的防火墙或蹩脚的HTTP服务器。没有任何有关您的设置和测试的信息,我们无法回答这个问题。你可能想阅读[问]并在你的问题中包含足够的细节,以便其他人可以理解你的问题。 – CodeCaster

回答

0

这不是所有HTTP头都被服务器接收到的情况。试试下面这个例子:

var app = require('express')(); 

app.get('/', (req, res) => { 
    res.end('header is ' + req.get('databaseName') + '\n'); 
}); 

app.listen(3333,() => console.log('listening on 3333')); 

node app.js启动它(或者你保存它),并与连接:

curl http://localhost:3333 

您将获得:

header is undefined 

但是,当你发送标题:

curl http://localhost:3333 -H 'databaseName: ABC' 

你会得到:

header is ABC 

因此当然服务器获取标题。

您的客户端代码可能不会发送相关头文件,或者配置错误的代理服务器删除某些头文件,您可能会遇到问题。但是,您可以通过运行我的示例来看到服务器未收到某些标头,但情况并非如此。

回答您的问题“哪些自定义的HTTP标头名称值得使用?”真的取决于你。每一个你需要的头文件都值得使用。每个不需要的标题都不值得使用。

另请注意,自定义标头的前缀X-曾被广泛使用。它已被RFC 6648弃用,但您仍然可以使用X-DatabaseName而不是DatabaseName标头名称来避免一些冲突,但仍有一些运气。