gpt4 book ai didi

netflix-zuul - Netflix Zuul - 阻止请求路由

转载 作者:行者123 更新时间:2023-12-04 22:10:38 32 4
gpt4 key购买 nike

使用 Zuul,我可以轻松定义在将请求转发到特定服务之前或之后激活的自定义过滤器。

有没有办法阻止请求在“预”过滤器级别转发,并立即将响应发送给客户端?
我知道“静态”过滤器可以做类似的事情,但我需要根据请求来决定(基于请求本身中某些参数/ header 的存在)。

最佳答案

下面是我如何使用 zuul-filter 检查已授权 API key 的示例。如果没有,我会向客户端发送 401 响应。

 @Override
public Object run() {

RequestContext ctx = RequestContext.getCurrentContext();
HttpServletRequest request = ctx.getRequest();

String apiKey = request.getHeader("X-API-KEY");
if (!isAuthorized(apiKey)){
// blocks the request
ctx.setSendZuulResponse(false);

// response to client
ctx.setResponseBody("API key not authorized");
ctx.getResponse().setHeader("Content-Type", "text/plain;charset=UTF-8");
ctx.setResponseStatusCode(HttpStatus.UNAUTHORIZED.value());
}

return null;
}

请注意,如果客户端的 API key 未经授权,所有其他过滤器仍将运行,但由于 ctx.setSendZuulResponse(false),请求仍将失败。 .
当响应失败时,默认情况下它将是空的——也就是说,没有诸如 Content-Type 之类的 header 。等等。最好自己设置它们,以便客户端的浏览器等知道如何解析响应正文。

关于netflix-zuul - Netflix Zuul - 阻止请求路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37243381/

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