HTTP 自定义报文头
自定专用消息头可通过X-
前缀来添加;
但是这种用法被IETF在2012年6月发布的 RFC5548 中明确弃用,原因是其会在非标准字段成为标准时造成不便;其他的消息头在 IANA 注册表中列出, 其原始内容在 RFC 4229 中定义。 此外,IANA 还维护着被提议的新HTTP 消息头注册表.
虽然已经被明确弃用,但是在平时还是能够看到大量的页面依旧在 Response Header 中会 附带 以 x-
开头的内容。
所以了解一些自定义报文头的东西还是很有必要的,下面是来自 keycdn 上的一篇文章,原文传送门
自定义HTTP headers 通常意味着提供一些对 web 开发者有用的附加信息,或者是方便故障排除(troubleshooting)。这些 headers 通常以 X-
开头,我们会在之后进一步讨论其命名规范。这篇文章可以帮助你更好的理解 自定义 HTTP header 的实质,以及为什么他们能够发挥作用和怎样去创建他们。
为什么要使用 自定义 HTTP Headers?
如上所述,自定义报文头对故障排除和传递附加信息特别有用,甚至能在服务端实现特定的逻辑。例如, KeyCDN 使用 X-Cache
来告诉用户请求的某个资源是来自 edge server(代理服务器?)还是来自源服务器。
如果资源是来自缓存自定义报文头会返回一个 HIT
,如果来自源服务器则会返回MISS
。另外一个使用自定义 HTTP header 的例子是 X-Pull
。你可以使用这个自定义头做很多事,比如,限制源服务器上的带宽、限制 CDN 流量、在源服务器上创建自定义逻辑,等等。
自定义 headers有很多能够经常被用到的作用。即使你没有使用 CDN 亦或者没有在你的源服务器人为指定任何自定义 HTTP headers ,你可能仍然会发送带有自定义header 的响应。比如说,WorldPress 会发送以下 headers(虽然你可以手动禁止)。
X-Powered-By: PHP/5.2.17
X-Pingback: https://example.com/xmlrpc.php
命名规范
提到 HTTP 的自定义headers,这里面有一些来来往往的故事。最初,推荐自定义headers 以 X-
开头,这样用户就可以知道某个 header 是自定义的而不是标准的。然而,根据 RFC 5548 ,这种做法被弃用了。
虽然被弃用了,但是并不意味着不再支持。实际上,仍然还有很多场景用到 X-
。弃用的原因是以后某个特定的自定义 HTTP header 成为标准之后,浏览器需要支持两种命名,要不然开发者就需要更新之前命名的所有自定义header。现在推荐使用不含 X-
标记的名字来命名自定义 headers 。
设置自定义 HTTP Headers
如果你想在你的服务器 HTTP response 报文头中包含自定义的 HTTP header,流程将会很简单。我们将在接下来告诉你在 Apache
和 Nginx
上配置自定义header所需要配置。
Apache
对于 Apache 用户来说,把下面的片段添加进 .htaccess
文件。将 Custom-Header-Name
和 Custom Header Value
替换为想要的自定义header 名字和值就可以了。
Header set Custom-Header-Name "Custom Header Value"
Nginx
对于 Nginx 用户来说,将下面这个片段添加进 configuration
文件。
add_header Custom-Header-Name "Custom Header Value"
总结
自定义 HTTP headers 在某些场景下非常有用。虽然他设计的主要目的是为了提供附加信息,但是你可以使用它做更多的事。有一点值得注意的是避免将它用在改变 HTTP 原生方法的场景中。除此之外,可以尽情尝试不同的用法。
HTTP 自定义报文头相关推荐
- Jaxb对xml报文头的小修小改
前言: 也是在实际工作中, 借助jaxb来实现xml到java对象的映射转换. 在实际应用中, 也遇到了一些有趣好玩的东西, 权当记录下来. 本文主要讲解jaxb如何生成约定的xml报文头的实现思路, ...
- ajax中设置请求头和自定义请求头
回到文章总目录 1.创建在testfour文件夹并在这个文件夹里面 2.创建post.html文件 3.创建server.js文件 本篇文章使用了鼠标移动至方框则自动发送请求至服务端 通常设置请求头 ...
- 拦截器获取请求参数post_「SpringBoot WEB 系列」RestTemplate 之自定义请求头
[WEB 系列]RestTemplate 之自定义请求头 上一篇介绍了 RestTemplate 的基本使用姿势,在文末提出了一些扩展的高级使用姿势,本篇将主要集中在如何携带自定义的请求头,如设置 U ...
- IP、TCP、UDP报文头说明
IP报文头(大端字节序) 版本: 通常值为4(IPv4) 首部长度: IP头长度 表明包含多少个32Bit 包括可选头(如果有) 值为IP头大小除以4 如:没有可选头IP头为20字节 则该值为5 服务 ...
- 前端cookie 放到请求头_ajax请求携带cookie和自定义请求头header(跨域和同域)
错误: 1.ajax请求时是不会自动带上cookie的,要是想让他带上的话,必须设置withCredential为true. 正确: 1.ajax同域请求下,ajax会自动带上同源的cookie: 2 ...
- 使用wireshark分析tcp/ip报文之报文头
以太网报文的结构如下: 其中,以太网的帧头: 14 Bytes:MAC目的地址48bit(6B),MAC源地址48bit(6B),Type域2B,一共14B. IP头部: TCP头部: http:// ...
- java 自定义http头_HttpClient自定义HTTP头
HTTP消息可以包含许多描述消息属性的标头,例如内容长度,内容类型,授权等. HttpClient提供了检索,添加,删除和枚举标头的方法. 在下面的教程中,我们将演示如何将自定义HTTP头添加到Htt ...
- Ajax设置自定义请求头的两种方法
用自定义请求头token为例 方法一 $.ajax({type: "post",url:"http://127.0.0.1:4564/bsky-app/template/ ...
- php设置请求头部,php curl如何设置自定义请求头
php curl设置头的方法:首先设置自定义请求头:然后设置"curl_setopt($ch, CURLINFO_HEADER_OUT, );":最后执行"curl_ge ...
最新文章
- 将动画装入MicroPython I2C OLED
- bootsrap的font awesome的各种图标,包括动画图标
- HarmonyOS之AI能力·文字图像超分
- java手机号判断运营商_用Java对手机号所属运营商进行判断
- 用户登陆_华为路由器AAA用户密码登陆你了解吗?
- 亚太地区数学建模优秀论文_数学建模美赛强势来袭!
- 不借助任何变量进行变量交换
- Java执行外部命令,并把结果回显到控制台
- ufs2.0测试软件,UFS 2.1和UFS 2.0差距到底多大?跑分还有很多学问
- mysql 开源订阅模式_Canal(增量数据订阅与消费 )快速配置
- linux 内核 内存管理 bootmem alloctor 的初始化
- 万能表单资料管理系统
- android系统修改字体,安卓手机修改系统字体教程
- ios开发之使用bundle来管理资源文件
- 8.以微型计算机为中心,全国网络教育统一考试《计算机应用基础》复习要点
- matlab定义sliced类型,Sliced Variables
- c语言.jpg图片转成数组_Heic图片格式转换器
- 淘宝直通车定向推广怎么开技巧 直通车定向推广实操深度解析
- uni-app动态设置原生标题左侧按钮
- 斑斑驳驳。伤情时节,镌为别离的箫瑟