0

我正在尝试为某些嵌入式设备的ConnMan 连接检查创建一个简单的网页。这个库对某些事情非常挑剔。

正文必须是:<html>\n<head>\n</head>\n<body>\n</body>\n</html>\n如果有的话,即使末尾的尾随换行符丢失,它也会失败。

另一个组件是 的响应标头X-ConnMan-Status: online。通常响应标头不区分大小写,但如果大小写发生变化,ConnMan 会失败。这是一个看似不重要的细节,直到您尝试使用 AWS 托管它。

我的第一个想法是 CloudFront (CDN),因为它是静态内容。我也想找到一个无服务器解决方案,因为我不想管理 EC2 实例或 K8s pod。我设置了一个 CloudFront 分配,其中一个 S3 存储桶作为后端来托管简单的 HTML 响应。这很好用。

然后我开始探索添加响应头的各种方法。到目前为止,我已经尝试过:

添加响应标头的所有工作,但亚马逊对将标头名称转换为小写有一些疯狂的痴迷,我需要它X-ConnMan-Status不是x-connman-status。有没有一种简单的方法可以在 AWS 中托管它,它不会小写响应标头名称?

4

1 回答 1

0

我最终意识到标头名称的小写是由于 HTTP/2:https ://httpwg.org/specs/rfc7540.html#HttpHeaders

标头字段名称必须在 HTTP/2 中编码之前转换为小写。包含大写标题字段名称的请求或响应必须被视为格式错误

在 CloudFront 分配上禁用 HTTP/2 支持,或向客户端请求 HTTP/1.1,会保留标头大小写。

于 2022-02-25T17:16:07.777 回答