2015-03-23 3 views
1

Я хотел бы создать статус 301 перенаправление с URL-адреса, например http://whatever.com/whatever?whatever, до https://whatever.com/whatever?whatever. Я использую node.js, но я сомневаюсь, что ответ специфичен для узла.Как создать http-перенаправление HTTP-запроса, входящего в порт 80, на https на порт 443?

Я знаю, что вы можете написать заголовок «Location» с URL, как это:

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

Но как указать, что я хочу редирект, чтобы перейти к протоколу HTTPS?

ответ

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(); 
}); 

Стандартный пакет Узел HTTP автоматически не разобрать имя хоста и порт, так что если вам нужна совместимость с нестандартными портами вы должны использовать пакет, такой как Express, чтобы легко захватить req.hostname.

+0

Thats it! Просто нужен способ получить хост. Я нашел его где-то в другом месте, так что его довольно странный вид, что вы написали по существу дословно то, что у меня уже есть в моем коде. Но верный ответ, чтобы вы получили чек, спасибо! –