【问题标题】:Python Bottle rest headers not working with underscorePython Bottle 休息标头不适用于下划线
【发布时间】:2017-07-09 19:31:32
【问题描述】:

我正面临带有下划线的剩余标题的问题,在我打印它们时没有获得剩余标题的值。

有人知道我该如何完成这项工作吗?

谢谢!

【问题讨论】:

  • 不要在标题中使用下划线。即使它曾经有效,你也应该停止。

标签: python rest mod-wsgi bottle request-headers


【解决方案1】:

标题名称中不应使用下划线,只能使用破折号作为分隔符。

Apache 和 nginx 等主流 Web 服务器,以及一些 Python WSGI 服务器/框架会丢弃带有下划线的标头,以避免标头欺骗。

假设你有一个标题:

My-Header: value

这在 CGI/WSGI 中被转换为变量:

HTTP_MY_HEADER: value

当传递给应用程序时。

问题是一个标题:

My_Header: value

也映射到相同的。

这里的危险是客户端可以使用其中一个,而代理之间的某些东西可能会故意设置另一个尝试并获得优先权,从而在服务器/应用程序处理它时覆盖原来的。

由于这是一个潜在的安全问题,服务器现在只允许带有字母数字和破折号的标头通过,其他任何内容都将被丢弃。

【讨论】:

  • 嗨格雷厄姆,但它已经工作了几个月,突然停止工作我现在无法更改它,因为此更改也适用于客户端。
  • 你使用的是什么 WSGI 服务器? WSGI 服务器最近升级了吗?
  • Apache/2.4.18 (Ubuntu) mod_wsgi/4.3.0 Python/2.7.12 已配置。
  • 我有三个应用程序具有相同的设置,一个运行良好,而两个面临标题的下划线问题。
  • 是那些使用 Apache 2.2 工作的吗?如果是这样,那就是原因。 Apache 2.4 会阻止这些标头。即使仍然使用 Apache 2.2,更新版本的 mod_wsgi 也会阻止它们。
猜你喜欢
  • 2021-12-18
  • 2022-09-30
  • 2015-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多