서비스 내부 토큰(Passport
)을 사용하는 상황에서 인증을 마친 사용자의 정보를 Passport
로 담아 Gateway로 응답해주는 과정에서 한글이 포함되어 있어 깨지는 현상 발생.(인턴 프로젝트 간)
표준(RFC~) 에 따르면, HTTP Header
필드에는 ISO-8859-1 문자 세트만 포함 할 수 있다. 여기에는 한글이 포함되어 있지 않다. 표준 규격에 맞지 않으므로, 헤더에 한글 데이터가 포함되어 있으면 깨지는 현상이 발생한다.
ISO-8859-1 외 문자를 사용하기 위해선 별도 인코딩을 사용해야 된다.
대표적으로 Base64
, URL 인코딩
방식이 존재한다.
단, 받는 쪽에서는 이를 디코딩 해서 사용해야하므로 이점을 주의한다.
Base64
6비트를 묶어 4세트를 사용해, ASCII 영역의 문자(8비트)들로만 이루어진 일련의 문자열로 바꾸는 인코딩 방식이다.
ASCII 영역의 문자들 중, 알파벳 (a ~ z, A-z), 숫자 (0 ~ 9), 일부 기호 (+ /=)를 사용해 64 문자로 나타낸다.
6비트씩 묶음으로 ASCII 문자로 변환하기 때문에, 자릿수 보정 시 0을 사용하고, 빈공간은 =(padding) 를 사용한다.
예)
a = 64
인코딩
-> 2진수 = 0110 0001
-> 6비트 씩 묶어야 하므로 자릿수 보정 : 011000(24) 010000(16)
-> 6비트 씩 묶어 ASCII 문자로 4묶음 생성 : YQ== (빈 공간은 = 로 사용)
디코딩
YQ==
-> 6비트씩 이진수로 변환 : 01100001000
-> 8비트씩 묶고 나머진 버림: 01100001
-> ASCII 문자로 변환 : a(64)