Flask HTTP标头接口对获取和设置是否区分大小写?

时间:2019-07-09 18:26:44

标签: flask http-headers

在我的Flask应用中,我设置并获取标头值如下:

  • response.headers [“ X-Frame-Options”] =“ DENY”
  • request.headers.get('X-Forwarded-For','')

我从Google Cloud收到一封电子邮件,说它将很快仅使用小写的标头名称:

  

9月30日之后,HTTP(S)负载均衡器将转换HTTP / 1.1   标头名称在请求和响应方向上小写

我想弄清楚我是否需​​要在所有代码中使用小写的标头名称,或者Flask是否会为我精心处理这个问题。

1 个答案:

答案 0 :(得分:3)

在这里没有得到任何答案,我决定深入研究Flask代码!标题似乎在werkzeug中处理,尤其是在datastructures.py中处理。

“标头”类在获取标头时确实不区分大小写:

def __getitem__(self, key, _get_mode=False):
    ...
    ikey = key.lower()
    for k, v in self._list:
        if k.lower() == ikey:
            return v
    ...

似乎Headers类在设置标题时并不区分大小写,并且它使用您提供的确切键来设置标题。我认为这是可以的,因为这些标头的接收端上的任何代码都应遵循标准并将标头名称视为不区分大小写。