我已经仔细查阅了stackoverflow和express谷歌小组,但是我仍然没有找到答案。
根据我的理解,我可以采取以下两种方法之一:
1) 创建一个HTTP服务器实例和一个HTTPS服务器实例,并将它们设置为监听两个不同的端口。在路由中,将HTTP请求重定向到HTTPS端口。
当我选择选项1时,一般不会出现问题。然而,管理两个服务器感觉很笨拙,我真的觉得应该有更好的方法。
当我选择选项2时,出现以下错误:
(node SSL) error:1408A0C1:SSL routines:SSL3_GET_CLIENT_HELLO:no shared cipher 当然,我可以默认选择选项1,但我真的非常想知道为什么在选择选项2时出现了“没有共享密钥”的错误。而选项2是我更倾向于的路线。
根据我的理解,我可以采取以下两种方法之一:
1) 创建一个HTTP服务器实例和一个HTTPS服务器实例,并将它们设置为监听两个不同的端口。在路由中,将HTTP请求重定向到HTTPS端口。
//app
var app = express.createServer();
var app_secure = express.createServer({key: key, cert: cert});
app.listen(8080);
app_secure.listen(8443);
//routes
app.get("unsecure/path", function(req, res) {
...
}
app.get("secure/path", function(req, res) {
res.redirect("https://domain" + req.path);
}
app_secure.get("secure/path", function(req, res) {
res.send("secure page");
}
2) 按照TJ Hollowaychuk的建议执行:https://gist.github.com/1051583
var http = require("http");
var https = require("https");
var app = express.createServer({key: key, cert: cert});
http.createServer(app.handle.bind(app)).listen(8080);
https.createServer(app.handle.bind(app)).listen(8443);
当我选择选项1时,一般不会出现问题。然而,管理两个服务器感觉很笨拙,我真的觉得应该有更好的方法。
当我选择选项2时,出现以下错误:
(node SSL) error:1408A0C1:SSL routines:SSL3_GET_CLIENT_HELLO:no shared cipher 当然,我可以默认选择选项1,但我真的非常想知道为什么在选择选项2时出现了“没有共享密钥”的错误。而选项2是我更倾向于的路线。