URL Fetch

http://coolengineer.com/ 이라는 주소를 브라우져에 입력하면, 흔히 웹페이지를 기대하기 쉽습니다. 좀 기술적인 표현을 써서,
Content-type: text/html
라는 데이터 스트림을 받게 되는 것이죠. 사실 브라우져 입장에서 보면 어떤 Content-type이 전송되어 올지 아무런 사전 정보없이 막연히 기다리는 것입니다. 오직 사람만이 웹페이지라고 기대하고 주소에 입력합니다. 브라우져의 마음가짐은
Accept: text/xml,application/xml,application/xhtml+xml,text/html,text/plain,image/png
뭐 이정도로 표현된다고나할까요? 즉, 사람에 의해 입력한 주소는 브라우져의 입장에서는 어떤 Content가 올지 기대하지도 않았던 뭔가를 받는 셈입니다.

URL 공유?

그런데 이런 코드는 어떨까요? /index.php 의 내용입니다.
<html>
<head>
<link type="text/css" href="/index.php" rel="stylesheet" />
<script type="text/javascript" src="/index.php" ></script>
</head>
<body>
<img type="image/png" src="/index.php" />
</body>
</html>
CSS도 JavaScript도 Image도 심지어 이 HTML도 모두 /index.php 를 통해 전달됩니다. 물론 이런 장난을 할 때는 Cache-control: no-cache 로 해야겠지요. 그러나 이 코드가 잘 동작하기 위해서는 브라우져가 /index.php를 가져올 때, 이렇게 해야합니다.

최초.
GET /index.php HTTP/1.0
Accept: text/xml,application/xml,application/xhtml+xml,text/html,text/plain,image/png

다음.
GET /index.php HTTP/1.0
Accept: text/css

GET /index.php HTTP/1.0
Accept: text/javascript

GET /index.php HTTP/1.0
Accept: image/png
이렇게 Accept가 전송되어 오면 오죽 좋으랴마는, 실상은 그러하지 못하며. 따라서, 일반적인 웹브라우져로는 맨 위 코드에 해당하는 HTML이 존재할 수 없게 됩니다. 굳이 한다면, 순서에 따라 index.php의 내용을 내려주면 되겠지만, 가당치도 않겠죠.

맨 처음 화두를 꺼냈을 때와 두번째 Accept의 변경이 있을 수 있는 상황을 고려해본다면, 가장 큰 차이는, "특정 문맥 상에서의 URL 페치의 차이라 할 수 있을 것"입니다.

즉, 용도에 따라 URL을 가져오려한다면, 그 용도가 서버에 전달 될 수 있을 때, URL은 중복 될 수 있다는 뜻입니다. 즉, http://coolengineer.com/ 과 ftp://coolengineer.com/ 의 차이가 아닌 http://coolengineer.com/ 내에서의 용도 분화에 따라 다른 것을 수신할 수 있는 것을 의미합니다.

다음엔, 이 생각으로 좀 더 발전된 주제인 OpenID가 바라보는 URL에 대한 생각을 정리해보려합니다. 기대해주세요.
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

+ Recent posts