首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Hapi.js中将http重定向到https

在Hapi.js中将http重定向到https
EN

Stack Overflow用户
提问于 2017-08-30 19:30:23
回答 2查看 2.1K关注 0票数 2

我的hapi服务器有以下配置

代码语言:javascript
复制
const server = new Hapi.Server();

const tls = {
  cert: fs.readFileSync(path.join(__dirname, '../certificates/cert.crt')),
  key: fs.readFileSync(path.join(__dirname, '../certificates/cert.key')),
};

server.connection({
  port: process.env.PORT_HTTP || 80,
  host: process.env.HOST || 'localhost',
});

server.connection({
  port: process.env.PORT_HTTPS || 443,
  host: process.env.HOST || 'localhost',
  tls,
});

服务器在httphttps上都工作得很好,但我想将所有流量从http重定向到https

我应该如何继续,已经尝试注册hapi-require-https npm模块,但流量仍然相同,什么都没有发生。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-08-30 19:43:42

为http请求创建额外的服务器,并将其绑定到redirect函数。

代码语言:javascript
复制
var Hapi = require('hapi');
var http = new Hapi.Server(80);
var server = new Hapi.Server(443, { tls: {} });

var redirect = function () {

    this.reply.redirect('https://your.site/' + this.params.path);
});

http.route({ method: '*', path: '/{path*}', handler: redirect });

更新(其他选项)

代码语言:javascript
复制
server.route({
    method: 'GET',
    path: '/', 
    handler: function (request, reply) {

        if(request.headers.referer.split(':')[0] == "http"){
           this.reply.redirect('https://your.site' + this.params.path);
        }
    }
});

这个怎么样?将它们绑定在一起

代码语言:javascript
复制
var http = new Hapi.Server(80); // our extra server
http.route({ 
method: '*', 
path: '/{path*}', 
handler: 
      function (request, reply) {

       // if(request.headers.referer.split(':')[0] == "http"){
           this.reply.redirect('https://your.site' + this.params.path);
       // }
    }
});
票数 3
EN

Stack Overflow用户

发布于 2017-09-11 05:15:40

创建两个服务器实例,分别处理http和https流量。

代码语言:javascript
复制
var Hapi = require('hapi');
var server = new Hapi.Server(80);
var httpsServer = new Hapi.Server(443, { tls: { // your certificates here} });

现在将hapi-gate插件注册到基础服务器,以便它将流量重定向到https。

代码语言:javascript
复制
server.register({
  register: require('hapi-gate'),
  options: {https: true} // will force https on all requests
}); 

您也可以使用hapi-require-https插件。

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

https://stackoverflow.com/questions/45959243

复制
相关文章

相似问题

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