본문 바로가기

TIL/트러블슈팅

Spring Cloud Gateway yml 파일 필터 설정 Refresh routes error

이슈

👉 2023-10-19T17:40:37.000+09:00 ERROR 10904 --- [           main] o.s.c.gateway.route.CachingRouteLocator  : Refresh routes error !!!

java.lang.IllegalArgumentException: Unable to find GatewayFilterFactory with name addRequestHeader
at org.springframework.cloud.gateway.route.RouteDefinitionRouteLocator.loadGatewayFilters(RouteDefinitionRouteLocator.java:145) ~[spring-cloud-gateway-server-4.0.7.jar:4.0.7]
at org.springframework.cloud.gateway.route.RouteDefinitionRouteLocator.getFilters(RouteDefinitionRouteLocator.java:192) ~[spring-cloud-gateway-server-4.0.7.jar:4.0.7]
at org.springframework.cloud.gateway.route.RouteDefinitionRouteLocator.convertToRoute(RouteDefinitionRouteLocator.java:132) ~[spring-cloud-gateway-server-4.0.7.jar:4.0.7]

문제

👉 Spring Cloud Gateway에서 발생한 오류 메시지로 보입니다. 에러 메시지 내용을 간략하게 요약하면 "addRequestHeader"라는 이름의 GatewayFilterFactory를 찾을 수 없다는 내용입니다

 

해결

👉 FilterConfig에 있는 필터 코드와 yml파일에 있는 filters 필터명이 같아야 한다.

.route( r -> {
    return r.path("/second-service/**")
            .filters(f-> f.addResponseHeader("ssresh","sshreqv")
                    .addRequestHeader("ssreqh","sshreqv"))
            .uri("http://localhost:8082/");
})
 # 대입 연산자(=) 이용해서 콤마(,)로 나열하면 왼쪽부터 들어감 => 필터명 = 헤더이름,헤더값
filters:
#대문자임!! AddRequestHeader
  - AddRequestHeader=fsreqhyml,fsreqhvyml 
  - AddResponseHeader= fsreqhyml,fsreqhvyml