当前位置: 首页 > 面试题库 >

ExpressJS节点HTTPS服务器上的Heroku错误H13

关宏毅
2023-03-14
问题内容

我正在尝试在我的Node.js服务器(Expressjs框架)上实现HTTPS。我有自己的签名证书和密钥,以及用于测试/开发的自签名证书/密钥:

if(process.env.NODE_ENV == 'production'){
  var app = module.exports = express.createServer({
    key: fs.readFileSync('./ssl/nopass_server.key'),
    cert: fs.readFileSync('./ssl/server.crt')
  });
} else {
  var app = module.exports = express.createServer({
    key: fs.readFileSync('./ssl/self_signed/nopass_server.key'),
    cert: fs.readFileSync('./ssl/self_signed/server.crt')
  });
}

我还在Heroku上设置了SSL端点。一切正常localhost,并且Endpoint似乎正常运行,但是当我在生产环境中(在Heroku上)运行应用程序时,出现了H13应用程序错误。有趣的是(或者不是),如果我告诉express创建一个HTTP服务器:var app = module.exports = express.createServer()它可以工作,但是Chrome抱怨说the page at https://mydomain.com ran insecure content from http://mydomain.com

我可以/不应该在Express中创建HTTPS服务器以进行生产吗?如果可以的话,我还需要做些其他的事情来使其在Heroku上运行(例如,我信任它使用来设置正确的端口var port = process.env.PORT)吗?如果没有,如果没有运行https服务器,那么如何提供“安全”内容,以使浏览器不会抱怨?

我正在使用以下方法来处理任何非https请求:

app.get('*',function(req,res,next){
  if(req.headers['x-forwarded-proto'] != 'https'){
    res.redirect('https://mydomain.com'+req.url);
  } else next();
});

目前位于我其余路线的上方,这可能是问题所在,还是应该在其他地方?

一般而言,我对https的经验非常有限,因此我可能缺少明显的东西。


问题答案:

SSL终止发生在Heroku的负载均衡器上;它们会向您的应用发送普通(非SSL)流量,因此您的应用应创建一个非HTTPS服务器。至于the page at https://mydomain.com ran insecure content from http://mydomain.com,请确保所有图像/脚本/等。您的页面正在使用的内容也通过https协议提供。



 类似资料:
  • 获取未定义id的错误。如果我使用,它工作得很好。这是客户端代码: 下面是我自己的代码: 我做错了什么? 如果我使用以下代码:

  • 问题内容: 我想为我的本地主机创建一个https服务器。 Node JS文档提供了开箱即用的解决方案,但我对此有些困惑。 例 要么 在这里,我如何获取本地主机的密钥,证书或pfx? 问题答案: 出于开发目的,您可以创建自认证证书。这是在基于Linux的系统上执行此操作的方法: 首先,生成一个私钥 这会将1024位RSA密钥存储在文件key.pem中。 然后,使用该密钥生成一个SSL证书: 现在,您

  • 我在运行节点服务器时一直面临以下错误,但代码以前可以正常工作。有专家可以解决这个问题吗? 下面是server.js的错误部分

  • 我在Heroku和Flask上发现一个500内部服务器错误。我的应用程序在localhost上运行得非常好http://127.0.0.1:5000/.尝试广泛搜索堆栈溢出,但未找到答案。 这是heroku日志 这是我的一些代码 这是我的文件树 甚至尝试了,但它不起作用。请帮助。

  • 我试着简单地在我的路线和渲染产品中获取照片的位置。ejs文件: 它在本地主机上工作,现在我导入我的路由。在real server中的js文件,当我尝试打开产品时,它抛出504错误。 试图按照这个指示,但没有帮助。 获得504GATEWAY_TIMEOUTNodeJs grep-i“504”/var/log/nginx/access。日志 82.135.208.60--[2019年9月16日:07:

  • 2020-01-28T01:42:46.028688+00:00 Heroku[web.1]:使用命令启动进程 2020-01-28T01:42:45.000000+00:00APP[api]:生成成功 2020-01-28T01:42:48.451589+00:00Heroku[web.1]:状态从启动更改为崩溃 2020-01-28T01:42:48.433700+00:00 Heroku[W