HTTP在不同的端口redirect到HTTPS

我正在尝试将每个http请求redirect到https服务器。 如果https服务器的端口是443, 这工作正常 。但是,如果我尝试redirect到不同的端口,它不会发生。 这是我的代码:

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) 

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

你可以确定你是否改变了这个:

 var host = req.headers['host'] 

至:

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

还添加一些日志logging:

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

看看你正在build设的URL是什么样的。

您也可以使用url模块来处理URL而不是手动连接string以避免类似的错误。 看到:

在任何情况下,添加一些日志logging,以知道你正在build设的URL看起来像。 用curltesting它:

 curl -v http://localhost:1234 

查看返回的标题。