0

我的应用程序中的某些 API 端点需要 HTTPS 连接。

我正在尝试通过使用以下 express.js 代码来强制执行该操作:

  if (!req.connection.encrypted) {
    return res.status(401).json({errors: [{code: 'INSECURE_REQUEST', message: 'Reseller API requires HTTPS'}]})
  }

但是谷歌云上的req.secure不断回报。false是否有任何类型的请求转发不会在 Google Cloud 内部转发 HTTPS?有没有其他方法可以确保 Google Cloud 上的 express 应用程序内部的 HTTPS 连接?

4

2 回答 2

0

谷歌云文档包含一个答案:https ://cloud.google.com/appengine/docs/flexible/nodejs/runtime#https_and_forwarding_proxies

App Engine 在负载平衡器处终止 HTTPS 连接并将请求转发到您的应用程序。有些应用需要确定原始请求的IP和协议。用户的 IP 地址在标准 X-Forwarded-For 标头中可用。需要此信息的应用程序应配置其 Web 框架以信任代理。

使用 Express.js,使用信任代理设置:

app.set('trust proxy', true);
于 2019-08-12T12:50:43.383 回答
0

在 App Engine 标准中确保 HTTPS 流量的一种简单方法是secure: always在 app.yaml 文件中为每个处理程序添加元素。

如果您使用的是灵活环境,则有 2 个选项,具体取决于您是否使用自定义域。

如果没有,您可以将 url 中的实际点替换为 -dot-。更多信息在这里

如果您使用的是自定义域,您可以在此处查看整个过程。

我希望这会有所帮助!

于 2019-08-02T09:21:52.540 回答