我刚刚将服务器更改为使用HTTPS。我有一个锅炉板代码。当我转到localhost:8888时,浏览器挂起,我的路由永远不会被调用。命令行的卷曲是相同的。
我想知道我错误地定义了我的路线。 代码如下:
var express = require('express');
var routes = require('./routes');
var user = require('./routes/user');
var https = require('https');
var path = require('path');
var app = express();
var fs = require('fs');
// all environments
app.set('port', process.env.PORT || 8888);
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.cookieParser());
app.use(express.methodOverride());
app.use(app.router);
//app.use(logErrors);
app.use(express.static(path.join(__dirname, 'public')));
var options = {
key: fs.readFileSync('key.pem'),
cert: fs.readFileSync('cert.pem')};
app.get('/', routes.index);
app.get('/users', user.list);
https.createServer(options, app.handle).listen(app.get('port'), function(){
console.log('Express server listening on port ' + app.get('port'));
});
任何人都能看到问题所在?
答案 0 :(得分:1)
您需要转到https://localhost:8888
。
浏览器无法自动判断您正在侦听该端口上的SSL连接。
答案 1 :(得分:1)
我认为您只需要app
app.handle
:
https.createServer(options, app)....
另请注意,对于cURL测试,您需要执行curl --insecure https://localhost:8888
,因为您可能使用的是非商业性自签名证书,如果没有用户明确的覆盖,该证书既不会卷曲,也不会影响浏览器。