如何创建一个http重定向端口80上的http请求到端口443上的https?

时间:2015-03-23 07:16:54

标签: node.js http

我想创建状态301重定向,从http://whatever.com/whatever?whateverhttps://whatever.com/whatever?whatever等网址。我正在使用node.js,但我怀疑答案是特定于节点的。

我知道您可以使用以下网址编写“位置”标题:

response.writeHead(301, {
   'Location': request.url
});
response.end();

但是如何指定我希望重定向转到https?

1 个答案:

答案 0 :(得分:1)

为此目的,通常使用301永久重定向。要更改协议,您需要在Location标头中包含协议和主机:

var server = http.createServer(function(request, response){
    var newUrl = 'https://' + request.headers.host + request.url;
    response.writeHead(301, {
       'Location': newUrl
    });
    response.end();
});

标准的Node HTTP包不会自动解析主机名和端口,因此如果您需要与非标准端口兼容,则应使用Express之类的包轻松抓取req.hostname