반응형
Recent Posts
Recent Comments
«   2024/05   »
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 31
Tags
more
Archives
Today
Total
관리 메뉴

Real Vectorism. 훨씬 더 입체적으로...

html과 css가 application/json 으로 반환되는 문제 (EnableWebflux 어노테이션 관련) 본문

Java (based by Spring Boot 2)

html과 css가 application/json 으로 반환되는 문제 (EnableWebflux 어노테이션 관련)

grast 2022. 8. 15. 21:35
반응형

Spring Webflux 기반으로 index.html 파일이 보여지도록 작업을 했다. 그 결과로 작성한 index.html 이 / 루트를 통해 라우팅되는 것을 확인을 분명히 했었다.

 

그런데 어느날부터 계속 index.html 이 뜨지 않게 되었다.

 

증상은 이러했다.

 

서버는 정상적으로 띄워진다
라우터 클래스에 작성한 라우팅 함수에 문제는 없다. 즉, 빌드 과정에서 문제가 없다.
크롬에서 url 접근을 시도했을 때 아무런 데이터도 먹히지 않는 html로 시작해서 html로 끝나는 페이지가 나온다.
라우팅 클래스의 문제인지 핸들러 함수에 로그를 찍고 콘솔에 로그가 찍히는지를 확인했다. 정상적으로 로그가 출력된다.

크롬의 개발자도구를 들어가서 확인을 해본 결과, 페이지는 물론이고 css까지 전부 application/json 로 반환하고있는 모습이 나온다. 당연히 이러면 html이 알아들을 수 없는 개소리인게 당연하지. 브라우저도 아니고 html에서 json이 뭔 소용이겠는가...

허나 html은 물론이고 css도 application/json 으로 제공할 필요가 없기 때문에 수동적으로 이런식으로 소스코드를 짠 적은 없다. 도대체 무엇이 문제인가

 

그리고 일주일간의 대삽질의 대장정 끝에 얻어낸 결론

 

@EnableWebflux 어노테이션을 사용하는 순간 완전제어가 되어 부분적으로 index.html 정적리소스를 제공하기 위한 모든 기능들이 해제된다.

 

즉, @EnableWebflux 어노테이션을 지우거나 해당 클래스를 삭제하는 순간 index.html 파일을 다시 재회할 수 있다. 그러고도 페이지를 볼 수가 없다면 어디에선가 @EnableWebflux 가 한번 더 사용되었거나 인위적으로 응답을 제어하는 무언가가 더 있을 것으로 보인다.

 

@EnableWebflux 는 index.html 와 같은 정적리소스가 보여지도록 작업된 프로젝트에서는 사용해서는 안되는 어노테이션인것 같다.

 

 

 

필자는 CorsFilter 작업을 위해 작성한 클래스가 있는데 여기에 @EnableWebflux가 달려서 index.html 가 보이지 않게 되어서 한동안은 Cors가 코로스(殺す)의 뜻으로 기억될 것 같다

 

결국 @EnableWebflux 를 쓰고 프론트엔드는 프로젝트에서 분리시키기로...

반응형
Comments