自定义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)