自定義HTTP標頭通常用於提供可能與Web開發人員相關的其他信息,或用於故障排除目的。這些標題通常首先開始X-,但是,我們將進一步討論命名約定。這篇文章應該有助於您更好地全面瞭解自定義HTTP標頭實際是什麼,它們有用的原因以及如何定義它們。
自定義標頭非常適合故障排除,信息用途,甚至在服務器端實現特定邏輯。例如,我非常喜歡利用'msg'字段來配合400~599錯誤編號來提供額外的錯誤消息。如果資產是從緩存傳遞的,則自定義標頭返回HIT,如果是從源服務器傳送,則返回MISS。使用自定義HTTP標頭的另一個例子是實現X-Pull標頭。您可以將此自定義標頭用於各種用途,包括限制源服務器上的帶寬,限制CDN流量,在源服務器上創建自定義邏輯等。自定義標頭有很多用途,它們非常常用。即使您沒有使用CDN或未在源服務器上專門定義任何自定義HTTP標頭,您仍可能使用自定義標頭髮送響應。例如,WordPress發送以下標頭(但是可以禁用它們)。
X-Powered-By: PHP/5.2.17 X-Pingback: https://example.com/xmlrpc.php
HTTP自定義頭的命名約定
最初,建議開始命名自定義標頭,X-以便用戶知道這些標頭是自定義的而不是標準化的。但是,根據RFC 6648,此建議已被棄用。在應用程序協議的上下文中使用的新參數的創建者不應該在其參數名稱前加上“X-”或類似的結構。雖然不推薦使用建議X-,但這並不意味著它不再受支持。事實上,仍有許多場景X-繼續使用。棄用建議的原因X-是,如果特定的自定義HTTP標頭變得標準化,瀏覽器將需要支持這兩個名稱,或者開發人員需要更新其自定義標頭名稱的所有實例。相反,現在建議只使用沒有X-前綴的相關內容來命名自定義標頭。
設置自定義HTTP標頭
對於Apache用戶,可以將以下代碼段添加到.htaccess文件中。只需將自定義標題名稱和“自定義標題值”替換為HTTP標頭的實際名稱和值即可。
Header set Custom-Header-Name "Custom Header Value"
對於Nginx用戶,可以將以下代碼段添加到配置文件中。請務必修改名稱和值以滿足您的需要,並在保存更改後重新加載Nginx。
add_header Custom-Header-Name "Custom Header Value"
Node.JS非常討厭Apache和Nginx容器的配置方式, 非要以一種不倫不類的語法寫在配置文件當中, 很不靈活, 還是喜歡nodejs'無容器'的管理模式, 全部配置都寫在代碼中:
Response.set('Content-Disposition', 'attachment; filename="file.zip"');
使用自定義頭部的時候, 命名是時候記得要繞開瀏覽器的標準key-name就好了, 具體的標準名可以參考MDN(https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers)