【发布时间】: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