Dion씨가 자신의 블로그에 쓰셨던 글입니다.

비행기에서 생각해낸 아이디어라고 합니다(비행기가 때로는 영감을 주는 장소가 되기도 하나봅니다). 여하튼 Dion씨는 어제의 비행 도중 서버 프록시, JavaScript 클라이언트, 그리스몽키 스크립트를 포함하는 Endpoint 라는 프로젝트를 생각해내셨습니다.

어떤 URL을 요청하면 Location: 헤더에 의해 다른 위치로 리다이렉트 되는 경우가 있습니다. 이 라이브러리는 이 경우의 최종 도착지를 알려준다고 합니다. 동작 예제를 볼까요?
[code:js]
// Simple version
Endpoint.resolve('http://snurl.com/2luj3', function(url) {
  alert(url);
});
 
// Using the original URL to work out if it has changed
Endpoint.resolve(
  document.getElementById('testurl').value,
  function(url, orig) {
    alert(url);
    alert(Endpoint.isRedirecting(url, orig));
  }
);
 
// How it is used in the Twitter Endpoint Resolver
Endpoint.resolve(url, function(resulturl, originalurl) {
  if (!Endpoint.isRedirecting(resulturl, originalurl)) return;
 
  newtext = newtext.replace(originalurl, resulturl, "g");
  jQuery(el).html(newtext);
});
처음에는 XMLHTTPRequest를 사용하려고 했지만 동일근원정책의 제한때문에 포기해야 했습니다. 그래서 다음 방법으로 선택한 것이 JSONP 콜백을 반환하는 서버 프록시였습니다. resolve(url, callback)을 호출하면, script 태그가 즉시 생성되어 DOM에 추가됩니다.


App Engine을 서버 프록시의 호스트로 사용하고 싶었지만, 어떻게 해야할지를 잘 몰랐습니다. URLFetch로 App Engine의 리소스에는 접근할 수 있지만, 최종 도착지를 가져올 방법은 없었습니다.

이런 서비스에 대한 Steve Gilmor씨의 글을 읽어보기는 했는데, 이해하기엔 어려웠습니다.

한편, Simon Willson씨가 App Engine을 이용한 json-time이라는 간단한 서비스를 내놓았습니다. Python의 pytz 타임존 라이브러리를 JSON에 실어 내보내주는 서비스라고 합니다.

from Endpoint Resolver: JavaScript Library to hunt for Location redirects
Posted by 행복한고니 트랙백 0 : 댓글 0