Exception Study

Error : java.lang.illegalArgumentException:HTTP headers must not contain null, CR, or NL characters. Header '헤더명' has invalid value '헤더값'(feat. Android)

85chong 2021. 9. 10. 09:31
728x90
반응형
SMALL

값을 확인할때에는 다른 툴 보다도 메모장을 열어서 해당 값을 그대로 복붙하여 해당값이 정확하게 어떻게 되어있는지 확인하는것이 중요함!

예를 들어, 해당 값을 복사하여 테스트 한다고 코드에 그대로 붙여넣기해서 돌리면 그 복붙하는 과정에서 값이 약간 변형된다. (실제 경험으로 개행문자 등이 사라진 상태로 붙여넣기가 되었음)

개행문자가 중요한부분은 \r \n 과 같은 개행문자는 자동으로 제거해서 정렬해주는 편집 툴들이 있어 자칫하면 그냥 넘어가기 쉽상이다.

실제로 토큰에 개행문자가 있어서 발생한 이슈가 있었는데, 해당 값이 복붙과정에서 개행문자가 자동으로 사라지는 경우가 있었다.(외/내부망을 이용한 클립보드 전송을 사용하여 복붙하였음) 이로 인해 해당 문자가 들어있는 문자열을 그대로 webview 사용시 header 에 추가하였을때, 심각한 에러가 발생한다. 참고 바람

* 값을 확인시에는 값의 맨처음과 맨끝의 문자 바깥부터 통째로 긁어서 확인해야한다.

 

* 해결방법 :

값에 개행문자가 있는지 확인하고 해당 문자를 정규식으로 걸러서 빈값으로 치환하는 코드를 넣어줬음

 

var getValue = " skeon\r\rc3@#@)#d\n\nkseosnw\ns0o3jdln23kds2\r-394=3io!!##$NMDsj30o "

//1차 트림으로 첫,끝 공백 제거
var result = getValue.trim()

//2차 개행문자 확인후 치환
var final_result = result.replace("\\r\\n|\\r|\\n|\\n\\r".toRegex(),"")

...(생략)

//헤더값 준비
var hash_header = Hash<String,String>()
hash_header.put("test_hash","final_result")

//헤더값 추가, webvie 호출
webview.loadUrl("url주소",hash_header)

 

- 끝 -