相关疑难解决方法(0)

Express.js重定向到HTTPS并发送index.html

我有一个简单的Express.js实例,它为单页Angular应用程序提供静态资源.我在Express配置上设置了一些中间件,以便为所有路由返回index.html,Angular可以从那里加载.

最近,我在Heroku上设置了SSL,我想确保从HTTP传入的所有流量都被重定向到HTTPS.我试图将这篇文章中建议的解决方案与我现在的解决方案结合起来,但最后还是在无休止的重定向循环中.

简而言之,我需要将所有流量从HTTP重定向到HTTPS,并为所有请求发送index.html文件.我在这做错了什么?

var gzippo = require('gzippo');
var express = require('express');
var morgan = require('morgan');
var app = express();

// set environment variables
var env = app.get('env') || 'development';

app.use(morgan('dev'));

// serve static assets
app.use(gzippo.staticGzip("" + __dirname + "/dist"));
app.use("/js", express.static(__dirname + "/dist/scripts"));
app.use("/fonts", express.static(__dirname + "/fonts"));
app.use("/img", express.static(__dirname + "/dist/assets/images"));
app.use("/css", express.static(__dirname + "/dist/styles"));


// Redirect all HTTP traffic to HTTPS
function ensureSecure(req, res, next){
  if(req.secure){
    // OK, continue
    return next();
  };
  res.redirect('https://'+req.hostname+req.url); // handle port numbers …
Run Code Online (Sandbox Code Playgroud)

javascript heroku node.js express angularjs

11
推荐指数
1
解决办法
2824
查看次数

使用EBS和ELB环境在node.js express app中将http转发到https

我使用以下内容将所有http请求重定向到https请求.

我可以从日志中看到标题'x-forwarded-proto'从未填充且未定义.

app.get('*', function(req, res, next) {
    //http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/TerminologyandKeyConcepts.html#x-forwarded-proto
    if (req.headers['x-forwarded-proto'] != "https") {
        res.redirect('https://' + req.get('host') + req.url);
    } else {
        next();     
    }
});
Run Code Online (Sandbox Code Playgroud)

它导致重定向循环.如何在没有循环的情况下正确重定向?

amazon-web-services node.js express amazon-elastic-beanstalk

6
推荐指数
1
解决办法
3896
查看次数