【问题标题】:What is the maximum response header length on Google Cloud Run?Google Cloud Run 上的最大响应标头长度是多少?
【发布时间】:2019-08-13 08:11:09
【问题描述】:

我正在尝试部署一个在某些情况下会设置很长标题的服务。在本地运行时,我能够成功设置和接收长 (>8KB) 标头而不会出现问题。但是,在部署到云运行后,这些长标头有时会被完全剥离。

这可能是我的应用程序在两种环境中表现不同的其他问题,但是否有 Google Cloud Run 指定的最大标头长度或任何有关设置 HTTP 标头的要求/限制的信息?

【问题讨论】:

  • 你在这里使用什么 HTTP 服务器?是gunicorn吗?
  • @DustinIngram 我正在使用 go 标准库中内置的网络服务器。但是,这不是问题,因为当我在本地运行它时,即使是在 Docker 中,标头也会毫无问题地通过。只有当我在云运行中运行时,长标题才会被剥离。
  • 谢谢。你能提供一个我可以测试的小示例应用程序和 Dockerfile 吗?
  • @DustinIngram 这里:gist.github.com/Ameobea/aa67dfe5c6e2167a8fef9afda3f27b0b 我已经在本地运行了该容器,并且可以验证我的 HTTP 客户端是否成功接收了 10k 字符标头。我还将它部署到云运行:cloud-run-header-limit-demo-mi7imxlw6a-uc.a.run.app 如果您向该服务发出请求,您会看到标头已被剥离。
  • 根据golang.org/pkg/net/http/#pkg-constants DefaultMaxHeaderBytes 是 1MB 大约 10K 个字符。您可能想尝试将Server.MaxHeaderBytes 设置为更高的值,看看您的标头是否通过。

标签: google-cloud-platform google-cloud-run


【解决方案1】:

总长度超过 8190 个字符(包括名称、冒号和值)的任何标头似乎都将被删除。

这应该包含在https://cloud.google.com/run/quotas。我已经在内部提交了一个问题来解决这个问题。

【讨论】:

  • 我认为可能存在一个未记录的上限,无论 Google Cloud 为 Cloud Run 应用提供服务的流量代理使用何种语言,都会强制执行该上限。
猜你喜欢
  • 2018-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-09
  • 1970-01-01
  • 2021-10-07
  • 2010-09-16
  • 2021-10-04
相关资源
最近更新 更多