Redirect 从onRequest重定向Hapi.js
我正在使用hapiv6.11.1,并且一直试图有条件地将来自hapi.js服务器的请求重定向到另一台服务器。这就是我到目前为止所尝试的:Redirect 从onRequest重定向Hapi.js,redirect,proxy,hapijs,Redirect,Proxy,Hapijs,我正在使用hapiv6.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://someur
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条路由,现在我必须更改每个请求的处理程序,以便在满足我的条件时允许代理,而我不想这样做
如果有以下任何一种可能,我会很高兴:
谢谢。好的,我想出了以下解决方案:
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'上传递了适当的值,以使代理重定向正常工作
我仍将等待有人能为我提供比这更好的解决方案。您检查过请求对象中的标题了吗?是否到达指定重定向的块?