我正在开发node.js应用。它呈现了我的一个朋友的艺术。除了一些一般信息和许多图片,它还包括一个联系表格,供想要联系他的人了解他的工作。我想加密联系页面以保护通过表单发送的个人数据,但保持页面的其余部分不加密,以减少页面的加载时间。
我已经设法创建了一个加密我整个网站的HTTPS服务器。但我只想为联系页面建立加密连接。
有谁知道如何实现它?
我的一个解决方案是创建两个node.js服务器。一台HTTP服务器和一台HTTPS服务器,然后运行HTTP服务器上的主页面和HTTPS服务器上的联系页面。然后,指向联系人页面的链接将包含https。类似于:" https://www.domain.com/contact"。
但不知怎的,这并不是正确的方式所以我希望有人有更好的解决方案。
感谢您的帮助!
答案 0 :(得分:1)
HTTPS的性能低于普通HTTP的概念是一个需要消亡的神话。
在现代系统上,SSL / TLS的开销是< 1%的CPU。实际上,通过像SPDY这样的优化,您可能会发现TLS安全连接实际上比普通HTTP执行更好。我愿意下注,实际上,你没有注意到任何负面的性能差异。
另一个常见的误解是浏览器不会缓存通过HTTPS传递的资源。这是错误的。默认为All browsers cache HTTPS content。
通过使用所有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服务器还应启用HSTS。
app.use(function(req, res, next) {
res.set('Strict-Transport-Security', 'max-age=31536000');
next();
});