【问题标题】:How to redirects http to https using gulp-connect如何使用 gulp-connect 将 http 重定向到 https
【发布时间】:2017-03-23 18:30:33
【问题描述】:

如何在 Heroku 上使用 gulp-connect 强制 https(将 http 重定向到 https)?

我已经在 Heroku 上配置了 SSL,如果我在域前添加 https:// 前缀,我的网站效果很好。

gulpfile.js

'use strict';

var gulp = require('gulp');
var $ = require('gulp-load-plugins')();
var history = require('connect-history-api-fallback');

gulp.paths = {
  src: 'src',
  dist: 'dist',
  tmp: '.tmp',
  e2e: 'e2e'
};

require('require-dir')('./gulp');

gulp.task('default', ['clean'], function () {
  gulp.start('build');
});

gulp.task("serve:production", function(){
  $.connect.server({
    root: './dist',
    port: process.env.PORT || 3004,
    middleware: function(connect, opt) {
      return [
        history({})
      ]
    }
  });
});

【问题讨论】:

    标签: angularjs heroku https gulp gulp-connect


    【解决方案1】:

    我之前成功使用过这个包。配置非常简单。

    https://www.npmjs.com/package/express-sslify

    var express = require('express');
    var http = require('http');
    var enforce = require('express-sslify');
    
    var app = express();
    
    // Use enforce.HTTPS({ trustProtoHeader: true }) in case you are behind 
    // a load balancer (e.g. Heroku). See further comments below 
    app.use(enforce.HTTPS());
    
    http.createServer(app).listen(app.get('port'), function() {
        console.log('Express server listening on port ' + app.get('port'));
    });
    

    【讨论】:

      【解决方案2】:

      我已经设法使它与 gulp-connect 一起工作,我在其中创建了 express 实例,配置它并将它作为 中间件 进行连接。

      有了这个,我已经在 Heroku 上部署了 SSL 证书,但在我的本地机器上没有配置 SSL。

      var connect = require('gulp-connect');
      var express = require('express');
      
      gulp.task('connect', function() {
      
          var app = express();
          app.enable('trust proxy');
          app.use (function (req, res, next) {
                  if (req.secure) {
                          next();
                  } else {
                      if (req.headers.host !== 'localhost:8081'){
                        res.redirect('https://' + req.headers.host + req.url);
                      } else {
                          next();
                      }
                  }
          });
      
          connect.server({
            port: process.env.PORT || 8081,
            middleware: function(connect, opt) {
              return [app];
            }
          });
      });
      

      【讨论】:

        猜你喜欢
        • 2017-07-01
        • 1970-01-01
        • 2015-04-23
        • 2010-09-05
        • 1970-01-01
        • 2016-08-31
        • 2014-06-11
        • 2014-04-18
        相关资源
        最近更新 更多