HTTPS express.js服务器和路由

时间:2013-10-25 21:09:26

标签: https express ssl-certificate

我刚刚将服务器更改为使用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'));
});

任何人都能看到问题所在?

2 个答案:

答案 0 :(得分:1)

您需要转到https://localhost:8888

浏览器无法自动判断您正在侦听该端口上的SSL连接。

答案 1 :(得分:1)

我认为您只需要app app.handle

https.createServer(options, app)....

另请注意,对于cURL测试,您需要执行curl --insecure https://localhost:8888,因为您可能使用的是非商业性自签名证书,如果没有用户明确的覆盖,该证书既不会卷曲,也不会影响浏览器。