天天看點

全鍊路壓測的必經之路:自定義http頭

自定義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