에러 해결 및 이슈 공유

Failed to load resource : the server responded with a status of 406 () Error 해결

하나의묵 2022. 9. 30. 12:40

프런트에서  Axios Post 요청을 진행했을 때 Failed to load resource 406 에러를 만나버렸습니다.

 

요청을 보내는 부분까지는 잘 동작했고 백엔드 서버에 컨트롤러 까지는 

잘 도착하여 로그에 찍히는 모습을 보여주었는데 이상하게도 리턴을 하고나면 

프런트의 catch문에서 잡히는 모습을 볼 수 있었습니다.

 

Reponse부분에서 문제가 있는 것 같아서 백엔드에서 리턴 데이터의 값도 바꿔보고, JsonObject에 담아서

리턴해보기도 하고 Try-catch문을 다시 작성해보기도 했는데 소용이 없었습니다.

 

해당 406 에러에 대해서 조금더 알아보기 위해 찾아봤을 때 406 에러 코드는 아래와 같은 내용을 담고 있는 에러였습니다.

 

      'HTTP (HyperText Transfer Protocol) 406 Not Acceptable 클라이언트 오류 응답 코드는 서버가 요청의 사전 콘텐츠

      협상 헤더에 정의 된 허용 가능한 값 목록과 일치하는 응답을 생성할 수 없으며 서버가 기본 표현을 제공하지 않음

      을 나타냅니다'.

 

서버에서 Response 를 해줄 때 Accept 헤더에 적혀있는 형식을 생성해 낼 수 없을 경우 발생하는 에러였는데

자세히 알아보기 위해 개발자도구(F12) > Network 에서 Post 요청이 발생했을 때 해더에 값을 확인해보았습니다.

 

프런트에서 Request Headers에 Accpet(클라이언트에서 웹서버 요청 시 해당 선언 타입만 사용하겠다는 의미의 해더)는

아래와 같았고

 

Response Headers 에 Content-Type(Response 시 데이터 타입) 은 아래와 같았는데 charset=UTF-8 부분이 때문에

오류가 발생했다고 생각했습니다.

 

역시나 .. 서버의 컨트롤러 부분을 확인해보니 produces 어노테이션을 사용하여 응답메시지의 형태를 지정하고

있었습니다.

 

위 부분에 produces를 지우고나니.. 406에러가 말끔하게 사라졌습니다.

 

혹시나 406에러가 발생하시는 분들은 통신을 주고받을 때 사용하는 데이터 타입이 다른지 확인하시고 통일

하도록 수정하시면 될 것같습니다.

 

406 에러를 찾다가  produces 등에 잘 정리하신 글을 발견하여 공유합니다.

https://2ham-s.tistory.com/292