반응형
발단
페이스북 로그인 연동을 마치고 최종적으로 게시 버튼을 눌러 작업을 완료하려고 하니,
개인정보처리방침 url이 잘못되었다는 경고가 떴습니다.
해당 주소로 접속해보니 아무 이상이 없어보이는데 아무튼 안 된다고 합니다.
그래서 우리의 친구 GPT에게 물어봤더니 다음과 같은 원인을 제시해줬습니다.
- HTTPS 미사용: URL이 반드시 HTTPS로 되어 있어야 합니다. HTTP는 지원하지 않습니다.
- 유효하지 않은 URL: 입력한 URL이 실제로 존재하지 않거나, 연결이 끊어진 경우.
- Facebook 정책 미준수: URL에 접근했을 때 내용이 Facebook의 개인정보처리방침 요구사항을 충족하지 않을 경우. 예를 들어, 개인정보 수집, 사용, 저장, 공유 방법 등에 대한 명확한 설명이 부족할 때.
- URL 포맷 문제: URL이 완전한 절대 경로 형식이어야 하며, 잘못된 문자가 포함되어 있으면 오류가 발생할 수 있음.
- 테스트 환경 문제: Facebook 앱 설정에서 개발 모드일 경우 일부 URL이 제한될 수 있음.
https로 되어 있었고 접속이 잘 되는 것으로 보아 유효하지 않은 url도 아니었습니다.
혹시 내용이 부족해서 그런 것은 아닐까 하는 생각도 들었지만
사람이 검수를 하는 것이 아닌 이상 내용에 대해서 그렇게 면밀하게 검토를 할 것 같지는 않았습니다.
유레카
답답한 마음에 postman
을 켜서 해당 url에 요청을 보내봤더니 500 에러가 뜹니다.
에러의 정체는 극악무도한 Null Pointer Exception 이었습니다.
그러고 보니 최근에 accept-language
를 가져와서 사용하는 부분을 추가했었는데 혹시...?
JSP의 request
객체로부터 헤더의 내용을 가져오는 getHeader()
메서드는
해당하는 파라미터 값이 없으면 null을 반환합니다.
이 값을 그대로 사용하니 NPE가 발생했던 것입니다!
브라우저를 통해 접속할 때는 accept-language
값이 당연히 있을테니 문제가 없지만
postman
, cURL
로 요청을 보내는 경우는 accept-language
값이 없어서 문제가 됩니다
해결
그냥 null 체크만 해주면 됩니다.
String lang = request.getHeader("accept-language") != null ? request.getHeader("accept-language") : "";
반응형
댓글