본문 바로가기

Spring

Spring Controller 중복 호출되는 이슈

728x90

최근에 로그를 보다가 Controller에 특정 페이지를 리턴하는 메소드에서 중복 호출이 되고있는 것을 발견했다.

사실 이전에도 발견되어 인지하고있었지만, 따닥 이라던가 새로고침을 빠박 할 수도 있기 때문에 넘어갔는데

생각보다 너무 자주 로그가 찍혀있고 시간 간격도 매우 짧기 때문에 원인을 찾아야겠다는 생각이 들었다.

 

상황은 이렇다.

@Controller
public class TestController {

	...
    
    @GetMapping("index")	//아니면 "/"
    public String index(Model model, HttpServletRequest request, args...) {
    	...
        
        return "/~~~/index"
    }

	...
}

해당 코드처럼 간단히 index라는 view 페이지를 리턴하고있는 경우

"/index" 호출이 같은 쓰레드로 0.1초차이로 2번씩 호출되는 것이다.

 

원인은 <img>태그, 정확히 말하면 <img>태그 내에 src="#" 속성이 원인이었다.

index 페이지내에 아래와 같은 태그가 존재했다.

<img id="imageId" src="#" width="100" height="180" alt="#">

 

<img>는 src에 명시된 URI나 경로로 이미지를 요청한다. (Accept-type으로 이미지를 지정한다 image/svg, image/webp 등)

src="#"으로 되어있다면, 이미지 요청을 현재 페이지로 요청하게 되는게 아닐까 싶다. <form>도 그러니까

 => 브라우저 개발자 도구를 통해 확인이 가능하다

 

src="#"부분을 지우고 한번씩 요청되는것을 확인할 수 있었다.

 

매우 간단한 원인과 해결방법에 비해서 발생할 수 있는 문제가 상당히 크다고 느껴진다.

해당 페이지에서 호출하는 api가 많다면 부하가 상당히 증가할테니

 

마크업을 붙일때 꼭 주의하자

 

728x90