Node.js   发布时间:2022-04-24  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了node.js – 如何正确设置和测试Hapi域和子域?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我目前正在更新我用于从请求对象解析语言环境的 small library.它目前适用于Express和Koa,但我正试图让它与Hapi合作.

对于测试,我正在使用他们的文档中描述的Mocha和Hapi的注入方法.我也查看了他们的文档来设置服务器的properties,但我没有找到设置域名的例子,如locahost.en甚至子域名,如en.localhost.com.

目前,我的测试设置如下:

var server = new Hapi.Server();
server.connection({
    //is this correct?
    uri:'localhost.en:3000',port: 3000
});

var handler = function(request,reply) {
    //return the parsed locale {String}
    return reply(accept(request,{
           supported: ['en']
    }).getFromDomain());
 };

server.route({
    method: 'GET',path: '/',handler: handler
});
server.start(function() {});

其中inject设置如下:

server.inject({
    method: 'GET',url: '/',headers: {
        'Accept-Language': 'ja','Set-Cookie': 'mycookie=test'
     }},function(res) {
        assert.StrictEqual(res.result,'en');
        done();
});

如何在服务器@L_450_3@中设置域和子域?是否有插件可以做到这一点?另外,我如何从请求中获取/解析域和子域?我假设我可以从主机名获取域名,但子域​​名怎么样?

解决方法

认情况下,Hapi将在网络接口上侦听所有请求,而不管域是什么(由主机头的值指示).如果要获取请求的主机头的值,可以只检查request.headers.host.

如果您只想检查已解析的主机名(域),可以检查request.info.hostname

server.route({
    method: 'GET',handler: function(request,reply) {

        var hostname = request.info.hostname;    

        reply('Ok');
     }
});

如果要限制路径(或插件)允许的主机名,可以设置vhost选项.

server.route({
    method: 'GET',vhost: ['en.example.com'],reply) {

        reply('Ok');
     }
});

要使用server.inject测试不同的vhost,可以只包含显式主机头

server.inject({
    method: 'GET',headers: {
        'Set-Cookie': 'mycookie=test',}},function(res) {

        Assert(res.statusCode === 404);    // 404 because not en.example.com
});

server.inject({
    method: 'GET','Host': 'en.example.com'
     }},function(res) {

        Assert(res.statusCode === 200);    // 200 because en.example.com
});

大佬总结

以上是大佬教程为你收集整理的node.js – 如何正确设置和测试Hapi域和子域?全部内容,希望文章能够帮你解决node.js – 如何正确设置和测试Hapi域和子域?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。