2016-11-21 42 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標頭名稱來避免一些衝突,但仍有一些運氣。