일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Argos
- NonUniqueResultException
- ubuntu
- 우아한테크코스 블랙잭
- 자바 롬복
- 검색api
- 우아한테크코스
- 배포스크립트
- 우아한테크코스5기
- docker에 ubuntu
- SpringDataJPA
- jpa
- clearAutomatically
- 밤랩
- 영속성컨텍스트
- ubuntu이미지
- @Param
- bomblab
- unique result
- @Modifying
- 회고
- 레벨인터뷰
- @Query
- 벌크연산
- 우분투
- 스프링부트배포
- 우테코
- BDDMockito
- Mock
- 스프링 롬복
- Today
- Total
Jeomxon's Tech Note
[오류해결] Filter에 알 수 없는 요청이 걸렸던 이유 본문
문제 상황
팀 프로젝트를 진행하면서 OAuth를 이용한 회원가입 및 로그인 기능을 맡게 되었다.
거의 구현 막바지 무렵 자잘한 에러들을 고치고 있었는데,
개발서버에서는 발생하지 않았던 것으로 기억했는데 로컬에서 띄운 서버에서는 알 수 없는 에러로그가 찍히고 있었다.
토큰이 올바르지 않다고..?
토큰을 보낸 적이 없는데 이런 예외 메시지와 함께 에러로그가 찍히는 걸 확인할 수 있었다.
에러가 발생한 위치는 알았지만, 어느 시점에 해당 에러가 발생했는지 알기 위해서 위치를 파악해야했다.
일단 해당 로그로 확인할 수 있었던 사실은
- filter에서 에러가 발생했기 때문에 요청의 시작 시점에 예외가 발생
- 해당 로그 이전에 회원 조회 쿼리문이 함께 나간 것을 확인했기에 두번째 요청에서 발생
그러면 결과적으로 내가 보낸 요청은 1번이었는데,
왜 두번째 요청이 나갔고, 해당 요청은 filter에서 걸렸을까?에 대해서 고민해봤다.
여러가지 방법을 생각해보다가 상속받아 사용했던 OncePerRequestFilter에서 override한 doFilterInternal()을 활용해보기로 했다.
여기서는 HttpServletRequest를 인자로 받는다.
따라서 이것을 잘 활용하면 Request의 정보를 얻을 수 있을 것이라고 생각했다.
내가 구현했던 Override하여 구현했던 doFilterInternal()의 메서드 내부에 간단하게 print문을 두 줄 추가해줬다.
System.out.println("========" + request.getMethod() + "======");
System.out.println("========" + request.getRequestURI() + "======");
그리고 다시 로그를 확인해봤다.
GET메서드와 함께 들어온 /favicon.ico라는 요청이었다.
개발자 도구(f12)를 웹에서 눌렀을 때 가끔 봤던 기억이 나서 일단 검색을 해봤다.
파비콘? 문제의 원인
파비콘이라는 것이 문제의 원인임을 알 수 있었다.
이와 같이 탭의 좌측에 표시되는 아이콘을 뜻하는 것이었다.
이는 사용자의 편의성, 식별 등을 위해서 과거부터 브라우저에서 제공되는 것이라고 한다.
기본적으로 루트 디렉토리를 기준으로 파비콘에 대한 get요청을 보낸다고 한다.
따라서 개발자 도구를 열어서 확인해보면 아래 그림과 같이 요청이 나갔던 것을 확인할 수 있다.
어떻게 요청을 막지?
이를 해결하기 위해서는 루트 디렉토리에 파비콘을 등록을 해줘야한다.
현재는 임시로 요청을 확인하는 작업이었기에 파비콘이 정해져있지 않아서 발생하는 문제로 판단했다.
실제 서버환경에서는 클라이언트가 파비콘을 설정해둔다면 이와같은 에러가 발생하지 않을 것으로 예상된다.
'Spring > Archive' 카테고리의 다른 글
[오류해결] javax.persistence.NonUniqueResultException: query did not return a unique result: 2 (0) | 2022.08.11 |
---|---|
[오류해결] 검색 API 구현 도중 발생한 오류 (0) | 2022.07.10 |
[Why?] id를 Long타입으로 사용하는 이유? (0) | 2022.07.09 |