【问题标题】:How can I start my Cloud Run App without HTTPS如何在没有 HTTPS 的情况下启动我的 Cloud Run 应用程序
【发布时间】:2020-08-25 03:19:42
【问题描述】:

我想部署一个仅供内部使用的 web 应用程序。这个 webapp 正在向其他内部服务发起 POST 请求。问题是服务没有使用 TLS 运行。 Cloud Run 上部署的 web 应用默认启用 HTTPS。因此我无法向服务发起任何 HTTP POST 请求。

知道如何在没有启用 TLS/HTTPS 的情况下部署应用程序吗?

代码sn-p:

      console.log('Starting Import: ' + this.urlString)
      const xmlHttp = new XMLHttpRequest()
      xmlHttp.open('POST', this.urlString, true)
      xmlHttp.send(null)
      console.log(xmlHttp.responseText)

日志:

Starting Import: https://34.95.76.221/importer/start/CATALOG001?file=test.xml

Chrome 控制台错误:

Importer-Controls.vue:103 POST https://34.95.76.221/importer/start/CATALOG001?file=test.xml net::ERR_CONNECTION_CLOSED

【问题讨论】:

  • inbound 请求需要 HTTPS,但 outbound 请求不需要。您能否准确说明您用于发出请求的代码以及遇到的错误?
  • @DustinIngram 在问题中添加了请求的信息
  • 现在知道了,是的,这不可能,因为 Cloud Run 始终以 HTTPS 运行。您可以在 Cloud Run 上实现一个端点,并将请求代理到不安全的端点。
  • 您的声明“从它发出 POST 请求”。您没有从 Cloud Run 发出 POST 请求。您正在从客户端的 Web 浏览器发出 POST 请求。混合协议请求由浏览器控制,与 Cloud Run 无关。
  • 不,这是副作用。它是由浏览器强制执行的规则引起的。通过 HTTPS 连接到 Cloud Run 或任何端点的副作用会导致浏览器拒绝或警告非 HTTPS 连接。 Cloud Run 与您的浏览器实施的规则无关。随着 TLS 变得越来越流行/强制,您真正的解决方案是在您的端点上实施 TLS,而不是尝试降级现有的安全性。

标签: vue.js google-cloud-platform https google-cloud-run


【解决方案1】:

您正试图从安全上下文发出不安全的请求。您要么需要为“内部服务”启用 SSL,要么需要构建一个代理来自 HTTPS->HTTP 的请求的服务。

例如,您可以制作一个简单的 Cloud Run 应用,将 HTTP 请求打包并在后端而不是前端执行。然后您的前端可以向代理发出 HTTPS 请求。

【讨论】:

  • 这是做这些事情的方法吗?听起来这么简单的事情要做很多工作
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-28
  • 2019-02-19
  • 1970-01-01
  • 2017-09-06
  • 2016-05-01
  • 1970-01-01
相关资源
最近更新 更多