如何从通过 https 加载的 Web 应用程序中调用 http://metadata.ggogle.internal

das*_*yes 1 metadata nginx google-cloud-platform mixed-content google-cloud-run

我有一个在 Cloud Run(nginx 网络服务器)上运行的 Angular Web 应用程序(更多信息在这里),我想从中获取来自 GCP 元数据服务器的访问令牌。我试图调用https://metadata.google.internal(使用 Cloud Shell 中的 curl),但连接被拒绝。对 HTTP 的调用运行良好。

当我通过 HTTP 从我的应用程序(通过 https 加载)调用元数据服务器时 - 从逻辑上讲,我收到了一个混合内容错误。当尝试通过 HTTPS 访问元数据服务器时 - 我收到错误 504 网关超时,我假设是由于元数据服务器拒绝 HTTPS 调用的原因。

我将非常感谢有关如何解决此问题的任何想法。

Joh*_*ley 5

URL 端点metadata.google.internal只能从实例内部访问 (Cloud Run)。此端点无法在实例外部访问,例如通过 HTTP 或 HTTPS 调用。一个线索是 TLD(顶级域)internal

如果您想通过网络浏览器远程访问此端点,则需要从浏览器向 Cloud Run(代码中的端点)发出请求,然后 Cloud Run 向元数据服务器发出内部请求并将响应返回给客户端.