我正在尝试将每个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)
答案 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
查看返回的标头。