[WEB] URL 인코딩
단순하게 정상적인 요청을 위해 URL 인코딩이 필요하다고 알고 있다가
어떤 이유로 인코딩 과정을 거쳐야 문제없이 요청을 할 수 있을까?라는 궁금증에 이유를 알아보았습니다.
URL 인코딩이 필요한 이유
결론은 "웹에서 URL에 포함될 수 없는 문자나 특별한 의미를 가지는 문자를 안전하게 전송하기 위해서" 였다.
모든 문자가 그대로 사용될 수 있는 것은 아니며, URL에 특정 문자를 포함할 때 문제가 생길 수 있기 때문에 URL 인코딩을
통해 이러한 문자를 안전하게 변환해야 한다고 합니다.
"그러면 URL인코딩이 필요한 대상은?"
URL의 예약어가 포함되는 경우
?, #, /, & 등은 URL 구조를 나타내거나 매개변수 구분에 사용 이 문자를 그대로 사용하면 URL이 변질될 수 있기
때문에 인코딩을 거친다고 합니다.
공백 및 비ASCII 문자
URL에는 공백을 포함할 수 없으며, 공백을 인코딩하지 않고 그대로 사용할 경우 오류가 발생할 수 있고 URL은 기본적으로 ASCII 문자만 허용하므로 한글과 같은 비 ASCII 문자, 비 ASCII 특수기호등은 URL인코딩 과정을 거쳐야 한다고 합니다.
"그러면 비 ASCII 문자의 URL 인코딩 과정은?"
비 ASCII문자 URL 인코딩 과정
먼저 UTF-8로 인코딩 후 이를 16진수 단위로 나누어 '%'기호와 함께 URL에서 사용할 수 있는 ASCII문자로 표현합니다.
이후 '%'도 예약어이기 때문에 '%'뒤의 두 자리 16진수는 인코딩 된 바이트로 해석이 되며 원래의 ASCII 문자 데이터와 구분점으로 사용된다고 합니다.