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