HTTP重定向到不同端口的HTTPS

时间:2017-02-10 17:18:55

标签: node.js http redirect https http-redirect

我正在尝试将每个http请求重定向到https服务器。 This works fine如果https服务器的端口是443.但是如果我尝试重定向到另一个端口,则不会发生。这是我的代码:

http.createServer(function(req,res){
    var host = req.headers['host'],
        url = req.url;
        res.writeHead(301,
            {"Location": "https://" + host + ":"+SERVER.SPORT + url})
        res.end()
}).listen(SERVER.PORT)

https.createServer(SERVER.HTTPS_OPTIONS,app).listen(SERVER.SPORT)

1 个答案:

答案 0 :(得分:2)

您的host很可能已包含端口号。

您可以确定是否更改了此内容:

var host = req.headers['host']

为:

var host = req.headers['host'].split(':')[0];

还添加一些日志记录:

console.log("https://" + host + ":"+SERVER.SPORT + url);

查看您正在构建的网址。

您还可以使用url模块来处理URL,而不是手动连接字符串以避免错误。参见:

在任何情况下,添加一些日志记录以了解您正在构建的URL是什么样的。还要用curl测试它:

curl -v http://localhost:1234

查看返回的标头。