Openshiftredirect到节点上的https
我正在构buildOpenShift上托pipe的Node.js应用程序。 我正在尝试将所有访问redirect到该网站的https版本。
我试图在公共目录中添加一个.htaccess文件,就像在其他一些post中提到的那样,但是它没有什么区别。
下面是我的.htaccess文件:
RewriteEngine on RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
我使用AngularJs和ui-router来处理网站上的导航。 通过执行下面的代码,我能够实现redirect到https,但我认为这应该在服务器端处理。
if(window.location.protocol != 'https'){ $window.location.href = $location.absUrl().replace('http', 'https'); }
.HTACCESS可以与基于Apache的磁带盒一起使用。 检查这个常见问题解答 它描述了如何使用Expressredirect到HTTPS。
如果您在节点应用程序中使用express.js ,则可以使用req.secure
检查请求是否通过https
。 ( 参考 )。
所以你可以编写中间件,你可以添加到所有的路由,将检查是否通过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
。