如何使用node.js加密网页的某些部分

如何使用node.js加密网页的某些部分,node.js,ssl,encryption,https,Node.js,Ssl,Encryption,Https,我正在开发node.js应用程序。它展示了我一个朋友的艺术。除了一些一般信息和大量图片外,它还包括一张联系表,供那些想联系他的人使用。我想加密联系人页面以保护通过表单发送的个人数据,但保持页面其余部分未加密以减少页面加载时间 我已经设法创建了一个HTTPS服务器,对我的整个网站进行加密。但我只想为联系人页面建立一个加密连接。 有人知道如何实现这一点吗 我想到的一个解决方案是创建两个node.js服务器。一个HTTP服务器和一个HTTPS服务器,然后在HTTP服务器上运行主页,在HTTPS服务器上

我正在开发node.js应用程序。它展示了我一个朋友的艺术。除了一些一般信息和大量图片外,它还包括一张联系表,供那些想联系他的人使用。我想加密联系人页面以保护通过表单发送的个人数据,但保持页面其余部分未加密以减少页面加载时间
我已经设法创建了一个HTTPS服务器,对我的整个网站进行加密。但我只想为联系人页面建立一个加密连接。 有人知道如何实现这一点吗
我想到的一个解决方案是创建两个node.js服务器。一个HTTP服务器和一个HTTPS服务器,然后在HTTP服务器上运行主页,在HTTPS服务器上运行联系人页面。然后,到联系人页面的链接将包含https。类似于:“。
但不知何故,这似乎不是正确的方式,所以我希望有人有一个更好的解决办法


谢谢你的帮助

认为HTTPS的性能不如普通HTTP的概念是一个需要消亡的神话

  • 在现代系统上,SSL/TLS的开销小于CPU的1%。事实上,通过SPDY之类的优化,您可能会发现TLS安全连接实际上比普通HTTP性能更好。我敢打赌,在现实中,你不会注意到性能上的任何负面差异

  • 另一个常见的误解是浏览器不缓存通过HTTPS交付的资源。这是错误的。默认情况下

  • 而不是普通的HTTP

使用HTTPS会失去的唯一一件事就是中间缓存代理,但老实说,我不会因此而失眠,除非你知道你网站的用户所在的网络具有相对较慢的链接和本地缓存代理。否则,这并不是一个真正的问题

与TLS相关的开销可以忽略不计。没有理由不通过HTTPS为整个站点提供服务


在通过HTTPS提供所有内容后,您仍然应该运行发出永久重定向的HTTP服务器。最简单的方法是运行单独的Express应用程序:

var http = express();

http.use(function(req, res){
    res.redirect(301, 'https://mydomain.com' + req.url);
});

http.listen(80);
您的HTTPS服务器也应该启用


只需在整个站点上使用SSL。没有理由不这么做。通过HTTPS提供页面服务的开销可能不值得担心,而且现在已经有了一种对整个网站进行常规加密的运动,为了增加网络的整体隐私。感谢您提供的详细答案。但是通过HTTPS建立连接不会因为使用了更复杂的握手而花费更长的时间吗?这也是加载时间的一部分,并且每次页面重新加载时都会发生,对吗?确实,初始TLS握手会增加一些开销(最坏的情况是*,2次额外的往返),但每个会话只需要发生一次。在HTTP keep alives和之间,浏览器不需要在每次重新加载页面时进行完全握手。此外,如果使用SPDY,只要选项卡处于打开状态,TCP连接就会保持打开状态。(*-正常TLS握手为2次往返;可减少所需的往返次数。)
app.use(function(req, res, next) {
    res.set('Strict-Transport-Security', 'max-age=31536000');
    next();
});