gpt4 book ai didi

redirect - Hapi.js 从 onRequest 重定向

转载 作者:行者123 更新时间:2023-12-02 12:37:51 25 4
gpt4 key购买 nike

我正在使用 hapi v6.11.1,并且一直在尝试将来自 hapi.js 服务器的传入请求有条件重定向到另一台服务器。这是我到目前为止尝试过的:

server.on('onRequest',function(request,reply) {

if(request.headers.customHeader) { // redirect only if header found
reply('custom header redirection').redirect('http://someurl.com');
return;
}

reply();

});

但是上述解决方案不起作用,仍然会访问我的服务器,而不是我指定的服务器。

我尝试在“onRequest”处理程序上执行reply.proxy(),但收到以下错误:

错误:未捕获错误:如果解析有效负载或输出不是流或数据,则无法代理

在尝试找出解决方案时,我从 hapi.js 文档中发现了以下内容:

仅在处理程序方法内且仅在reply()、reply.file()、reply.view()、reply.close()、reply.proxy()或reply.redirect(之一之前可用) 被调用。

但问题是我有大约 100 条路由,现在我必须更改每个请求的处理程序,以便在满足我的条件时允许代理,但我不想这样做。

如果可以实现以下任何一项,我会很高兴:

  1. 将请求从“onResponse”重定向到另一个域,而不更改处理函数。

  2. 服务器方法,可以让我配置所有路由配置并在其上注入(inject)代理重定向。

谢谢。

最佳答案

好吧,我想出了以下解决方案:

server.on('onRequest',function(request,reply) {
if(request.headers.customHeader) {
request.setUrl('/redirect');
}
reply();
});

然后创建一个仅代理请求的路由处理程序:

{
method : '*',
path : '/redirect',
config : {
payload : {
output : 'stream',
parse : false,

},
handler : function(request,reply) {

var url = 'https://customUrl.com';
reply.proxy({'uri' : url, passThrough : true});

}
}
}

在上面,我必须在“onResponse”上执行 setUrl,因为这是我可以按照 hapijs 文档执行此操作的唯一地方。其次,我在“/redirect”上传递了正确的值,以使代理重定向正常工作。

我仍然会等待能为我提供比这更好的解决方案的人。

关于redirect - Hapi.js 从 onRequest 重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31450050/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com