问题
spring gateway 报错如下:
java.lang.IllegalArgumentException: Required attribute ‘org.springframework.cloud.gateway.support.ServerWebExchangeUtils.gatewayRequestUrl’ is missing.
这是我在gateway filter里面 写的如下代码报的错
URI requestUrl = exchange.getRequiredAttribute(GATEWAY_REQUEST_URL_ATTR);
解决办法:
变更filter的order变为大于10000的值。
@Override
public int getOrder() {
return 10001; //这里要在 RouteToRequestUrlFilter 之后执行,才可以获得路由之后的路径
}
原因:
首先参考 spring cloud gateway 的全局过滤器
全局filter细品
这个里面 的 RouteToRequestUrlFilter 的作用,就是把转发之后的地址,写到了GATEWAY_REQUEST_URL_ATTR这个参数里。所以如果你的过滤器order值比这个小,你是获取不到这个里面的内容的,所以报错。
本文介绍了在Spring Cloud Gateway中遇到的IllegalArgumentException,具体表现为尝试获取`GATEWAY_REQUEST_URL_ATTR`时失败。问题源于自定义GatewayFilter的order值小于`RouteToRequestUrlFilter`,导致在filter执行顺序中无法正确获取转发后的URL。解决方案是将filter的order值设置为大于10000,确保其在`RouteToRequestUrlFilter`之后执行,从而避免报错。

5701

被折叠的 条评论
为什么被折叠?



