gateway filter 报错gatewayRequestUrl’ is missing

内容纲要

Required attribute ‘org.springframework.cloud.gateway.support.ServerWebExchangeUtils.gatewayRequestUrl’ is missing

代码如下,主要是获取request uri

@Override
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
    URI requestUrl = exchange.getRequiredAttribute(GATEWAY_REQUEST_URL_ATTR);
    String scheme = requestUrl.getScheme();
    if (!"ws".equals(scheme) && !"wss".equals(scheme)) {
        return chain.filter(exchange);
    } else if (DEFAULT_FILTER_PATH.equals(requestUrl.getPath())) {
        String wsScheme = convertWsToHttp(scheme);
        URI wsRequestUrl = UriComponentsBuilder.fromUri(requestUrl).scheme(wsScheme).build().toUri();
        exchange.getAttributes().put(GATEWAY_REQUEST_URL_ATTR, wsRequestUrl);
    }
    return chain.filter(exchange);
}

解决办法

URI requestUrl = exchange.getRequest().getURI();

标签

发表评论