406 ERROR : Not Acceptable
서비스를 운영하는데에 있어 간헐적으로 나오는 406 ERROR 가 발생하여 해당 에러에 대한 원인과 해결 방안에 대해 끄적여 보겠습니다.
406 ERROR 란 무엇인가?
클라이언트 에러 응답 코드로써 서버가 요청(Request)의 주도적인 콘텐츠 협상 헤더에 정의된 허용 가능한 값 목록과 일치하는 응답을 생성할 수 없으며, 서버가 기본 표현을 제공하지 않음을 나타냅니다.
⌘ 콘텐츠 협상 헤더란?
동일한 URI에서 리소스의 서로 다른 버전을 제공하기 위해 사용하는 매커니즘
사용자 에이전트가 사용자에게 제일 잘 맞는 것이 무엇인지 (언어, 이미지 포맷, 인코딩 등)를 명시할 수 있다.
Accept, Accept-Charset(UTF 탄생으로 폐기), Accept-Encoding,Accept-Language 를 정의하고 있습니다.
해결 방안
1. 문서에 따르면 Accept_Language에 선언되지 않은 언어가 브라우저에 나올 떄 406Error 가 나올 수 있다고 한다 이에 따라 Accept-Language를 나라별에 알맞게 설정하였다.
EX) Accept-Language: fr-CH, fr;q=0.9, en;q=0.8, de;q=0.7, *;q=0.5
2. 또다른 406 Error 은 Accept 설정이 application/json 으로 설정되어 있어서 다른 유형의 응답 값을 받아주지 못하는 현상에도 나온다고 한다 (근데 다 json 형태로 오는거 같은데;;) 그래서 모두 허용해주는 */* 으로 변경해주니 우선적으론 에러가 나지 않는거 같다
3. 또 다른 예외에서는 getter 미설정으로 인한 406 error 도 나온다고 한다.. 하지만 난 코틀린을써서 그런 이슈는 없는거 같다.
참고 자료 : https://developer.mozilla.org/ko/docs/Web/HTTP/Status/406