使用Express.js和Google Cloud确保HTTPS连接



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

我试图通过使用以下express.js代码来实施这一点:

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

但是req.secure在Google Cloud上不断返回false。是否有任何一种请求转发不会在Google Cloud内部内部转发HTTPS?还有其他方法可以确保Google Cloud上的Express应用程序中的HTTPS连接?

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

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

如果没有,则可以用-dot-替换URL中的实际点。更多信息在这里。

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

我希望有帮助!

google cloud doc包含一个答案:https://cloud.google.com/appengine/docs/flexible/nodejs/runtime#https_and_and_forwarding_proxies

App Engine终止了Load Balancer处的HTTPS连接,并将请求转发到您的应用程序。一些应用程序需要确定原始请求IP和协议。用户的IP地址可在标准X-Forwarded-For-For-header中找到。需要此信息的应用程序应配置其网络框架以信任代理。

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

app.set('trust proxy', true);

最新更新