gpt4 book ai didi

angularjs - Nodejs res.redirect 不起作用?

转载 作者:太空宇宙 更新时间:2023-11-03 21:53:22 25 4
gpt4 key购买 nike

我有我的 Angularjs 网站,我正在尝试将所有 Http 流量路由到 Https,为此,我编写了下面的代码,但它不起作用,每个当我在 Http 重定向上打开我的网站时,没有发生。

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

app.use(express.static(__dirname + '/public')); // Website part added
var bodyParser = require('body-parser')
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }))

app.use(function(req,res,next) {

if(req.headers["x-forwarded-proto"] == "http") {

res.redirect("https://" + req.headers.host + req.url);
return next();
} else {
console.log('Request was not HTTP');
return next();
}
});

app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');

app.get('*', function(req, res) {
res.sendFile(__dirname + '/public/index.html');
});

谁能告诉我为什么这不起作用?

编辑 - 我注意到,每当我打开网站时,大多数时候这个中间件都不会被调用。这怎么可能?

编辑 - 我在 index.html 中设置了 base href="/" ,它会导致任何问题吗?

最佳答案

您好,实际上我犯的错误是在设置 /public 目录之后将重定向放在中间件上,但正确的方法是在设置之前放置它/public 目录。

正确的代码

app.use(function(req,res,next) {

if(req.headers["x-forwarded-proto"] == "http") {

res.redirect("https://" + req.headers.host + req.url);
return next();
} else {
console.log('Request was not HTTP');
return next();
}
});
app.use(express.static(__dirname + '/public')); // Website part added
var bodyParser = require('body-parser')
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }))

因为 Https 没有强制执行,但现在一切都按预期工作。

关于angularjs - Nodejs res.redirect 不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47556598/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com