2016-06-26 2 views
1

Я создаю приложение Node.js, размещенное на OpenShift. Я пытаюсь перенаправить все посещения https-версии веб-сайта.Openshift перенаправление на https на узле

Я попытался добавить файл .htaccess в общий каталог, как это было предложено в некоторых других сообщениях, но это не имеет значения.

ниже мой файл .htaccess:

RewriteEngine on 
RewriteCond %{HTTP:X-Forwarded-Proto} !https 
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R,L] 

Я использую AngularJs и UI-маршрутизатор для обработки навигации на сайте. Внедряя приведенный ниже код, я могу добиться перенаправления на https, но я думаю, что это должно быть обработано на стороне сервера.

if(window.location.protocol != 'https'){ 
     $window.location.href = $location.absUrl().replace('http', 'https'); 
    } 

ответ

1

.HTACCESS может использоваться с картриджами на базе Apache. Проверьте this FAQ answer; он описывает, как перенаправить на HTTPS с помощью Express.

+0

Спасибо, это именно то, что мне нужно. – Viktor

0

Если вы используете express.js в приложении узла вы можете использовать req.secure, чтобы проверить, если запрос приходит через https. (reference).

Таким образом, вы можете написать промежуточное программное обеспечение, которое вы можете добавить ко всем маршрутам, которые будут проверять, идет ли запрос через https и переадресовать, если он поступит через http.

Например:

HTTPS-redirect.js файл:

exports.httpsRedirect = function (req, res, next) { 
    if (req.secure) { 
    next(); 
    } 
    else { 
    res.redirect('https://' + req.headers.host + req.path); 
    } 
}; 

app.js файл (или что вы используете для определения маршрутов):

var express = require('express'); 
var app = express(); 

var https = require('./https-redirect'); 

app.all('*', https.httpsRedirect); 

Теперь все ваши маршруты будут запускать промежуточное ПО https.httpsRedirect и перенаправить на https, если необходимо.