我试图弄清楚如何在Sails JS 0.11.0中将所有HTTP请求重定向到HTTPS。
我尝试了下面的代码,但它没有用。
var express = require("express"),
app = express();
app.get('*', function(req,res) {
if(req.isSocket){
return res.redirect('wss://' + req.headers.host + req.url)
}
else{
return res.redirect('https://' + req.headers.host + req.url)
}
}).listen(80);
答案 0 :(得分:3)
您可以使用Sails中的http中间件来执行此操作。
在config / http.js文件中,将这样的函数添加到中间件对象。
requireHttps: function(req, res, next) {
if (!req.secure) {
return res.redirect('https://' + req.get('host') + req.url);
}
return next();
},
或者像这样(如果您使用的是Amazon Elastic Load Balancer,可以通过http与您的服务器通信):
requireHttps: function(req, res, next) {
if (req.headers['x-forwarded-proto'] !== undefined && req.headers['x-forwarded-proto'] == 'http') {
return res.redirect('https://' + req.get('host') + req.url);
}
return next();
},
然后只需添加' requireHttps'到中间件对象中的order数组,如下所示:
order: [
'startRequestTimer',
'cookieParser',
'session',
'passportInit',
'passportSession',
'bodyParser',
'handleBodyParserError',
'compress',
'methodOverride',
'poweredBy',
'$custom',
'requireHttps',
'router',
'www',
'favicon',
'404',
'500',
],
答案 1 :(得分:0)
我使用nginx进行重定向。 nginx.conf 文件
中的配置server {
listen 80;
server_name example.com;
rewrite ^ https://example.com$request_uri? permanent;
}