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

时间:2019-07-02 12:19:17

标签: apache tomcat google-cloud-platform

昨天,我收到了来自GCP的邮件,内容涉及负载均衡器以及大小写标题。消息的一部分是:

  

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

     

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

Google专门谈论请求和响应标头名称(而不是值),但是例如,Google Load Balancer是否要求我将经典的PHP重定向标头“ Location”替换为小写的“ location”?

header("location: http://www.example.com/error/403");

当然,计划是按照标准制定的那样做,但在许多情况下,将是GCP截止日期(2019年9月30日)之前无法完成的工作。

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

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

1 个答案:

答案 0 :(得分:1)

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

如果此新政策会给您带来麻烦,您可以联系Google支持并暂时选择退出。

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

curl命令示例:

curl --http1.1 -H “x-goog-downcase-all-headers: test” http://example.com/

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

  

作为标准,所有现代浏览器均已准备好使用案例   敏感的标题名称?

是的。长期以来,这一直是规范。

  

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

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

  

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

不知道。