首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将nodejs express静态请求重定向到https

将nodejs express静态请求重定向到https
EN

Stack Overflow用户
提问于 2016-09-16 18:30:27
回答 4查看 3.4K关注 0票数 3

我需要将所有http请求重定向到https,包括对静态文件的请求。

我的代码:

代码语言:javascript
复制
app.use(express.static(__dirname + '/public'));

app.get('*', function(req, res) {
    if (!req.secure){
            return res.redirect('https://' + config.domain + ":" + config.httpsPort + req.originalUrl);
        }
    res.sendFile(__dirname + '/public/index.html');    
});

并且重定向不能处理静态文件。如果我更改了订单:

代码语言:javascript
复制
app.get(...);

app.use(...);

然后我的静电就不起作用了。如何对此类请求进行重定向?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-09-17 04:06:01

代码语言:javascript
复制
var app = express();

app.all('*', function(req, res, next){
    console.log('req start: ',req.secure, req.hostname, req.url, app.get('port'));
    if (req.secure) {
        return next();
    }

    res.redirect('https://'+req.hostname + ':' + app.get('secPort') + req.url);
});
票数 4
EN

Stack Overflow用户

发布于 2016-09-16 19:10:44

看看Node.js模块express-sslify。它正是这样做的--重定向所有HTTP请求,以便使用HTTPS。

你可以这样使用它:

代码语言:javascript
复制
var express = require('express');
var enforce = require('express-sslify');

var app = express();

// put it as one of the first middlewares, before routes
app.use(enforce.HTTPS()); 

// handling your static files just like always
app.use(express.static(__dirname + '/public'));

// handling requests to root just like always
app.get('/', function(req, res) {
   res.send('hello world');
});

app.listen(3000);

文档:https://github.com/florianheinemann/express-sslify

票数 0
EN

Stack Overflow用户

发布于 2017-02-17 03:53:25

代码语言:javascript
复制
function forceHTTPS(req, res, next) {
    if (!req.secure) {


        var hostname = req.hostname;


        var destination = ['https://', hostname,':', app.get('httpsPort'), req.url].join('');

        return res.redirect(destination);
    }
    next();
}


//For redirecting to https
app.use(forceHTTPS);

// For serving static assets
app.use(express.static(__dirname + directoryToServe));

到https的重定向在提供静态资源之前进行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39529265

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档