云 运行 HTTP2 破坏了 CORS

Cloud Run HTTP2 breaks CORS

我是 运行 Google Cloud 运行 上的基本 Quarkus 应用程序。

默认设置在 Cloud 运行 和后端容器之间使用 HTTP 1.1。如果我 enable http2 那么 CORS 失败,因为 Access-Control-Allow-Origin header 被破坏并且 returns 原点和通配符一起被浏览器拒绝。

例如,当使用在线 Swagger UI 测试我的应用程序时,响应是:access-control-allow-origin: https://petstore.swagger.io,*

使用 curl 和 h2c 在本地测试我的应用程序没有显示问题。因此,似乎 Google Cloud 运行 正在对此 header.

进行一些处理

我可以设置一些配置来阻止这种情况发生吗?

我设法找到了我使用的框架中的潜在问题。

错误是框架返回了重复的 header。例如:

access-control-allow-origin: *
access-control-allow-origin: https://petstore.swagger.io

该云中似乎有一些奇怪的行为 运行 将它们合并为一个 header 然后将这些值连接起来。