GCP HTTP(S) 负载均衡器会将 HTTP/1.1 标头名称转换为小写,我的代码会受到影响吗?

Ben*_*min 5 apache tomcat google-cloud-platform

昨天我收到一封来自 GCP 的邮件,其中介绍了负载均衡器以及大小写标头。消息的一部分是:

9 月 30 日之后,HTTP(S) 负载均衡器会将请求和响应方向中的 HTTP/1.1 标头名称转换为小写;标头值不会受到影响。

由于标头名称不区分大小写,因此此更改不会影响遵循 HTTP/1.1 规范的客户端和服务器(包括所有流行的 Web 浏览器和开源服务器)。同样,由于 HTTP/2 和 QUIC 协议已经需要小写的标头名称,因此通过这些协议到达负载均衡器的流量不会受到影响。但是,我们建议在推出之前测试使用自定义客户端或服务器的项目,以确保将影响降至最低。

Google 专门讨论请求和响应标头名称(不是值),但例如,Google 负载均衡器是否要求我将经典的 PHP 重定向标头“位置”替换为小写的“位置”?

header("location: http://www.example.com/error/403");
Run Code Online (Sandbox Code Playgroud)

当然,计划是按照标准说的去做,但在很多情况下会是在 GCP 截止日期(2019 年 9 月 30 日)之前无法完成的工作。

作为标准,所有现代浏览器都准备使用不区分大小写的标题名称吗?我应该担心文件命名吗?(camelcases) 如果是这种情况,Apache 中存在一些 mod(例如)在我更改代码的同时使用?

https://cloud.google.com/load-balancing/docs/https/

Joh*_*ley 5

HTTP/1.1 规范指定 HTTP 标头不区分大小写。这仅适用于标头名称(“content-type”),不适用于标头的值(“application/json”)。

\n\n

如果这项新政策会给您带来问题,您可以联系 Google 支持并暂时选择退出。

\n\n

对于正确编写并执行不区分大小写的比较的代码,您不会遇到问题。在大多数情况下,您可以使用curl各种 HTTP 标头来测试后端代码。当然,完成代码演练是一个好主意。

\n\n

卷曲命令示例:

\n\n

curl --http1.1 -H \xe2\x80\x9cx-goog-downcase-all-headers: test\xe2\x80\x9d http://example.com/

\n\n

--http1.1 命令行选项的 Curl 文档:\n https://curl.haxx.se/docs/manpage.html

\n\n
\n

作为标准,所有现代浏览器都准备使用大小写\n 不敏感的标头名称?

\n
\n\n

是的。长期以来,这一直是常态。

\n\n
\n

我应该担心文件命名吗?(骆驼箱)

\n
\n\n

不会。新的更改不会影响 HTTP 标头的值,只会影响标头名称。

\n\n
\n

如果是这种情况,Apache 中存在一些 mod(例如)可以使用\n 同时我更改我的代码?

\n
\n\n

不,据我所知。

\n