강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

ho_0214님의 프로필 이미지
ho_0214

작성한 질문수

jsp에서 스프링 접근 시 헤더의 언더바(_)

작성

·

71

0

jsp에서 스프링서버 api에 접근 시
var xmlhttp= createXMLHttp();
xmlhttp.setRequestHeader("action_id", action_id);
다음과 같이 데이터를 담아 요청하였습니다.

스프링 서버에서 디버깅한 결과
request>coyoteRequest>headers>headers>"action_id:값"으로
데이터를 전달받았습니다.

jsp에서 담아준 그대로 값이 들어있었는데
request.getHeader("action_id")에서는 값을 추출하지 못하고
request.getHeader("actionId")로 추출한 결과 값을 추출할 수 잇었습니다.

nginx와 관련하여 이런 설정이 있다는 정보는 찾았지만
저는 현재 nginx없이 로컬에서 진행하고 있습니다.
혹시 스프링에서 이런 설정이 따로 있는건지 궁금합니다.

값을 추출하는 코드의 스네이크 표기법을 모두 카멜로 변경하고 테스트를진행하던 도중
새로운 크롬 환경에서 진행하게 되었는데 갑자기 헤더에서 카멜케이스는 추출하지 못하고
스네이크 케이스만 추출이 가능해졌습니다.

이러한 설정이 따로 가능한지 조언부탁드립니다..

요약
1. jsp에서 헤더에 스네이크 케이스로 값 전달, 스프링에서 값 추출시 카멜로만 추출이 가능하였음
2. 값 추출하는 key값들 모두 카멜로 변경
3. 새로운 크롬환경에서 다시 테스트 시 카멜로 추출이 불가능, 스네이크 케이스로만 추출이 가능

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

ho_0214님의 질문에 답변드리겠습니다.

JSP에서 스프링 서버로 데이터를 전송할 때 발생하는 헤더의 키 이름 변환 문제와 관련하여, 스프링 자체에서는 요청 헤더의 키 이름을 스네이크 케이스에서 카멜 케이스로 자동 변환하는 설정은 제공하지 않습니다. 스프링이 HTTP 헤더 이름을 가공하지 않고 원본 값을 유지하는 것이 일반적이기 때문입니다.

이러한 현상이 발생하는 것은 특정 미들웨어, 웹 서버, 또는 프록시 서버의 설정 또는 크롬 같은 웹브라우저의 동작에 의한 것일 수 있습니다. 예를 들어, 일부 프록시 서버 또는 웹 서버 설정에서는 헤더 이름을 내부적으로 변환할 수 있으며, 브라우저 또한 요청을 전송하기 전에 헤더의 형식을 정리하는 처리를 실행할 수 있습니다.

로컬 환경에서 테스트하고 계시고, nginx 등의 프록시 서버를 사용하고 있지 않다면, 문제의 원인을 정확히 파악하기 위해서는 다음과 같은 점검이 필요합니다:

  1. 웹 서버나 임베디드 서버(Tomcat, Jetty 등)의 설정을 확인합니다. 해당 서버들에서 요청 헤더에 대한 특별한 가공을 진행하는 설정이 적용되어 있는지 검토가 필요합니다.
  2. 개발 환경(IDE, 빌드 도구 등) 내에 있는 설정이나 플러그인들이 요청을 가공하는 동작을 하는지 확인합니다.
  3. 크롬과 같은 웹 브라우저의 확장 프로그램이나 설정이 헤더 정보를 변환하고 있는지 확인합니다. 특히, 새로운 크롬 환경에서 문제가 변경된 점을 고려할 때, 브라우저 환경의 영향을 받을 가능성을 검토해볼 필요가 있습니다.

결론적으로, 스프링에서 제공하는 기본 설정이나 동작으로는 요청 헤더의 키 이름 표기법을 변경시키는 경우는 일반적이지 않으며, 웹 서버, 프록시 서버 설정, 또는 개발 환경 및 브라우저의 특정 동작에 의한 것일 가능성이 높습니다. 따라서, 해당 환경 및 도구들의 설정을 점검해보는 것이 해결 방안을 찾는 데 도움이 될 것입니다.

ho_0214님의 프로필 이미지
ho_0214

작성한 질문수

질문하기