自定義HTTP標頭:命名約定


Answers

這個問題需要重新閱讀。 被問到的實際問題與CSS屬性中的供應商前綴不相似,在這些前提下,供應商支持和官方標準的未來驗證和考慮是適當的。 問的實際問題更類似於選擇URL查詢參數名稱。 沒有人應該關心他們是什麼。 但是,定制名稱間隔是完全有效的,也是常見的,正確的做法。

理由:
它是關於開發人員為定制的,特定於應用程序的頭文件而製定的慣例 - “ 與其帳戶相關的數據 ” - 與供應商,標準組織或由第三方實施的協議無關,除了所涉及的開發人員只需避免服務器,代理或客戶端可能有其他預期使用的標頭名稱。 出於這個原因,給出的“X-Gzip / Gzip”和“X-Forwarded-For / Forwarded-For”示例是沒有意義的。 提出的問題是關於私有API上下文中的約定,類似於URL查詢參數命名約定。 這是一個偏好和名稱空間的問題; 任何沒有“X”的代理或供應商都支持“X-ClientDataFoo”的擔憂顯然是錯誤的。

關於“X-”前綴沒有什麼特別的或神奇的,但它有助於明確它是一個自定義標題。 實際上,RFC-6648等人幫助支持使用“X-”前綴的情況,因為 - 作為HTTP客戶端和服務器的供應商放棄前綴 - 您的應用特定的私有API,個人數據 - 傳遞機制變得更好 - 與少量官方保留標題名稱的名稱空間衝突隔離。 也就是說,我的個人偏好和建議是更進一步,例如“X-ACME-ClientDataFoo”(如果你的小部件公司是“ACME”)。

恕我直言,IETF規範並沒有充分具體地回答OP的問題,因為它無法區分完全不同的用例:(A)供應商一方面引入了新的全球適用功能,如“Forwarded-For”,另一方面與(B)應用程序開發人員將應用程序特定的字符串傳遞給客戶端和服務 (A)。規範只關注前者。 這裡的問題是(B)是否有公約。 有。 它們涉及將參數按字母順序分組在一起,並將它們與類型(A)的許多與標準相關的標題分開。 (B)使用“X-”或“X-ACME-”前綴方便且合法,並且與(A)不衝突。 (A)中停止使用“X-”的廠商越多,(B)將變得越清晰。

例:
谷歌(在各種標準組織中佔有一席之地)是 - 截至今天,20141102在我的回答中進行了輕微的修改 - 目前使用“X-Mod-Pagespeed”來表示他們所涉及的Apache模塊的版本轉換給定的響應。 有人真的建議谷歌應該使用“Mod-Pagespeed”,沒有“X-”,和/或要求IETF保佑它的使用?

概要:
如果您在您的應用程序中使用自定義HTTP標頭(作為Cookie的一種有時適合的替代方法)以將數據傳遞到服務器或從您的服務器傳遞數據,並且這些標頭顯然不是意圖在應用程序的上下文之外使用,名稱 - 將它們與“X-”或“X-FOO-”前綴隔開是一個合理且常見的約定。

Question

我們的一些用戶要求我們在其發送的請求的HTTP標頭中包含與其帳戶相關的數據,甚至包括從我們的API獲得的響應。 在命名格式等方面添加自定義HTTP標頭的一般慣例是什麼?

另外,請隨時發布您在網絡上偶然發現的任何巧妙用法; 我們正在嘗試使用最好的方式來實現這個目標:)




標頭字段名稱註冊表在RFC3864定義,沒有什麼特別的“X-”。

據我所知,沒有私人標題的指導原則; 如有疑問,請避開它們。 或者看看HTTP Extension Framework( RFC 2774 )。

了解更多的用例會很有趣。 為什麼不能將信息添加到消息正文中?




Links