将所有http请求重定向到sails js中的https

时间:2016-01-05 06:14:20

标签: javascript node.js sails.js

我试图弄清楚如何在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);

2 个答案:

答案 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;
}