URL과 URI의 차이와 오해 (쿼리스트링은 URL이 아니다?)

URI와 URL의 차이를 검색하면, 종종 둘의 차이에 대해 오해하고 있는 블로그 글들이 있는 거 같습니다. URI와 URL를 구분 짓는 기준으로 쿼리스트링(url 끝에 붙는 download.do?uid=1234& 형태의 파라미터) 포함 여부를 언급하는 경우입니다.

 

예를 들어, https://www.example.com/test.html까지는 url이 맞지만, https://www.example.com/test.do?id=1234&id2=5678처럼 구체적인 리소스를 찾아가기 위한 파라미터가 포함되면 더 이상 url은 아니라는 것입니다. 이것은 잘못된 정의입니다. 뒤에 파라미터가 붙어도 url이라고 부릅니다.

URI vs URL

URI

URI(Uniform Source Identifier)는 인터넷에서 리소스의 이름이나 위치 또는 둘 다를 사용해서 리소스를 식별하는 문자열입니다. 하위 집합으로 URL과 URN이 있습니다. URI는 URL을 포괄하는 개념입니다.

 

uri의 형식은 아래와 같습니다. []로 표기한 건 생략 가능한 요소입니다.

scheme:[//authority]path[?query][#fragment]

위키피디아에서 가져온 예시를 첨부드리겠습니다. 내용을 확인해보면, 평소 인터넷을 쓸 때 사용하는 url 형식뿐 아니라 더 다양한 형태로 표기되는 걸 확인할 수 있습니다.

URI 예시
URI 예시

URL

URL(Uniform Resource Locator)은 웹에서 리소스의 위치를 알려주는 문자열입니다. 주로 웹에서 사용되기 때문에 http, https 프로토콜이 사용됩니다. url은 사용 시점에서 ‘고유하다’고 표현할 수 있지만, 서버 내 리소스 위치가 바뀔 수도 있는 거기 때문에 변경될 수 있습니다.

 

큰 틀은 uri와 동일하지만(url은 uri에 속해있기 때문에 당연하겠죠) 위 uri의 형식에서 authority 부분이 도메인 이름과 포트로 제한되는 점이 다릅니다.

URI과 URL의 주요 차이점

uri와 url의 주요 차이점을 정리하면 아래와 같습니다. 하위 집합 개념이니까 uri가 url과의 구별되는 요소가 무엇인지가 더 정확한 표현 같기도 하네요. 아래 포함된 예시를 보면서 확인해보시면 좋을 거 같습니다.

 

URI URL
리소스의 이름, 위치 모두 식별합니다. 리소스의 위치만 식별합니다.
특정 리소스를 다른 리소스와 구별하는 것이 목적입니다. 웹 상에서 리소스의 위치를 찾는 게 목적입니다.
html, css 뿐만 아니라 xml, jstl 등 기타 파일에서도 리소스를 찾는데 사용됩니다. html, css 등으로 이루어진 웹 페이지를 찾는데만 사용됩니다.
예시)
urn:isan:0000-0000-2CEA-0000-1-0000-0000-Y
ISBN 0-476-35557-4
https://google.com
예시)
https://google.com
http://www.example.com:80/path/to/myfile.html?key1=value1&key2=value2#SomewhereInTheDocument

참고한 문서 

반응형

댓글

Designed by JB FACTORY