[error] spring ajax return 406에러

공수정·2021년 10월 28일
1

error

목록 보기
7/10
  • 개발환경
    - 윈도우
    - 자바 1.8
    - tomcat 8.0
  • 문제상황

    ajax를 통해서 간단하게 값을 주고 받으려고 했는데, controller에서 return할 때 까지도 아무런 오류가 없었다.
    그런데 console창에 자꾸 경고문구로

    The resource identified by this request is only capable of generating responses with characteristics not acceptable according to the request "accept" headers.

    문구가 뜨고, success부분에서 결과 값을 alert로 띄우게 해놨는데 실행이 되지 않아 확인해보니 406에러가 찍히고 있었다.

  • 해결방법

    1.라이브러리 추가

    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
    	<artifactId>jackson-core</artifactId>
    	<version>2.1.0</version>
    </dependency>
    <dependency>
    	<groupId>com.fasterxml.jackson.core</groupId>
    	<artifactId>jackson-annotations</artifactId>
    	<version>2.1.0</version>
    </dependency>
    <dependency>
    	  <groupId>com.fasterxml.jackson.core</groupId>
    	  <artifactId>jackson-databind</artifactId>
    	  <version>2.1.0</version>
    </dependency>

    자신의 스프링 버전에 맞게 라이브러리를 추가합니다

    1. 컨트롤러 메서드 반환형에 @ResponseBody 어노테이션 추가
      @RequestMapping(value = "url", method = RequestMethod.GET)
      public @ResponseBody ResponseEntity<Integer> test(Locale locale, Model model) {
      	int test = 0;
      	HttpHeaders headers = new HttpHeaders();
      	headers.add("content-type", "application/json; charset=UTF-8");		
      	return new ResponseEntity<Integer>(test, headers,HttpStatus.OK);
      }
  • 원인

    스프링에서 ajax를 통해 통신을 하려면 컨트롤러에서는 json 응답으로 클라이언트에게 넘겨줘야하는데, 1. 라이브러리가 없어서거나 2. 웹페이지에서 개발자도구를 봤을때 응답이 json타입이 아닌 text/html타입이기 때문이다.

참고
JSON 응답 구현시 406 Error 해결

profile
계속해서 공부하는 개발자입니다 :)

0개의 댓글