【问题标题】:How to call http://metadata.ggogle.internal from within web app loaded over https如何从通过 https 加载的 Web 应用程序中调用 http://metadata.ggogle.internal
【发布时间】:2020-04-18 16:49:34
【问题描述】:

我有一个在 Cloud Run (nginx webserver) (more info here) 上运行的 Angular Web 应用程序,我想从 GCP 元数据服务器获取访问令牌。我试图打电话给https://metadata.google.internal(使用来自 Cloud Shell 的 curl),但连接被拒绝。对 HTTP 的调用运行良好。

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

对于如何解决此问题的任何想法,我将不胜感激。

【问题讨论】:

    标签: nginx google-cloud-platform metadata google-cloud-run mixed-content


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢,约翰。现在听起来很合乎逻辑:)......让我试着看看解决方案。
    • 不要让外部用户访问metadata.google.internal。它包含可以让访问者访问您的帐户的令牌端点。
    • 最初的想法是访问metadata.google.internal,以便从 Secret Manager 获取密钥值,仅在前端代码中使用。没有计划最终用户访问它们。在约翰的上述建议之后 - 我现在正在从后端访问元数据服务器。但这是一个很好的提醒。谢谢,AhmetB
    猜你喜欢
    • 2011-10-30
    • 2015-05-01
    • 1970-01-01
    • 2011-04-30
    • 2012-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多