2.3.1.5. 상대 참조 해석하기

우리는 앞에서 URL의 기본 컴포넌트와 문법에 대해서 알아보았다.
상대 URL을 절대 URL로 변환하기 위한 다음 단계는 상대 URL과 기저 URL을 각각의 컴포넌트 조각으로 나누는 것이다.

사실상 이것은 URL을 파싱하는 것에 불과하지만, 컴포넌트 단위로 분리한다는 점에서 이 작업을 'URL 분해하기'라고 부르기도 한다.
기저 URL과 상대 URL을 컴포넌트로 분해하고 나면, 변환을 끝내기 위해 다음 그림에서 설명하고 있는 알고리즘을 사용할 수 있다.

이 알고리즘은 상대 URL을 리소스를 참조하는데 사용할 수 있는 절대 경로 형태로 변환한다.
이 알고리즘은 RFC 1808에 최초로 기술되었고, 그 이후 RFC 2396에 포함되었다.

이전의 ./hammers.html 예의 경우, 위 그림에서 설명한 알고리즘을 적용할 수 있다.

  1. 경로는 ./hammers.html. 기저 URL은 http://www.test.com/tools.html.
  2. 스킴은 비어 있다. 도표의 '스킴이 비었다'쪽으로 따라 내려가면, 알고리즘에 따라 기저 URL의 스킴을 상속받는다(HTTP).
  3. 적어도 한 개의 컴포넌트는 비어 있지 않다. 위의 도표대로 흘러가서 호스트와 포트 컴포넌트를 상속받는다.
  4. 상대 URL(경로: ./hammers.html) 컴포넌트와 상속받은 컴포넌트를(스킴: http, 호스트: www.test.com, 포트: 80) 합치면, 새로운 절대 URL인 http://www.test.com/hammers.html을 얻을 수 있다.