필요에 의해 정리해보는 Trackback 수신모듈 제작시 고려해야할 점들.
1) 반드시 트랙백 주소가 별도로 존재해야하는 것은 아니다.
일종의 미신/신화, 내지는 아무 생각없이 트랙백을 붙인 서비스들이 대표적인데,
굳이 문서의 URL과 별도로 트랙백의 URL이 존재할 이유는 없다.
이렇게 된 이유는 Trackback규격을 만든 SixApart사의 MovableType만의 특수성때문.
MovableType은 처음엔 Perl로 만들어진 CMS-블로깅 도구로써, 그 특징 중 한가지로 스태틱빌드를 통한 정적인 페이지 생산을 들 수 있다. 즉, 모든 아카이브 페이지를 HTML 파일로 만들어 서버에 둔다는 뜻.
서버사이드 스크립트를 쓰지 않고 HTML파일이 생성되기 때문에, 트랙백이나 커멘트를 위해서는 별도의 서버사이드 스크립트 프로그램을 필요로 했다. 그래서 문서 URL과 트랙백 프로그램 URL이 다를 수 밖에 없었다.
초기 Blogger.com같은 경우에는 자체적으로 트랙백 등이 지원되지 않아, 많은 유저들이 써드파티 플러그인을 사용했었다. 이 경우도 문서 URL과 트랙백 URL이 다를 수 밖에.
그러나 이런 경우들을 제외한다면, 서버사이드 스크립트(PHP, ASP, JSP등)를 사용하는 블로깅 도구나 트랙백 서비스들이 굳이 별도의 트랙백용 URL을 유지할 필요는 없다. 바로 이 트랙백 URL과 문서 URL이 다른 까닭에 트랙백을 보내는 것이 귀찮고 번거로운 일이 되지 않았나… 아마도 MT등을 관습적으로 카피하다보니 이런 현상이 발생한 듯 하다.
2) 트랙백 Method 형식
트랙백은 보통 HTTP Request POST 형태로 수신된다. 아주아주 오래전 규격에서는 GET을 이용하기도 했었으나 현재는 거의 대부분이 POST를 이용하고 있다.
형식은 다음과 같다.
[HTTP header]
POST http://트랙백수신주소
Content-Type: application/x-www-form-urlencoded; charset=utf-8
charset을 반드시 명시해야 한다.
그리고, 넘어오는 필드들은 다음의 것들이다.
- url : 필수, 이것이 없다면 수신서버에서는 에러메시지를 리턴해야 한다.
- title : 옵션
- excerpt : 옵션
- blog_name : 옵션
이상은 모두 text를 데이터값으로 한다.
3) 인코딩
이상의 POST field들은 모두 charset에 정의된 인코딩을 따라야만 한다. (속편하게 아예 UTF-8로 하자.)
가끔 보면 국내 블로그 도구/서비스에서 EUC-KR을 써서 보내는 경우가 있다.
친절하게 하자면야, 들어온 메시지가 인코딩이 맞지 않는다면 강제컨버팅(iconv같은…)을 통해 인코딩을 UTF-8로 변환시켜주는 것이 좋을지도.
4) 길이
예전에 GET 메쏘드를 이용할 때에는 그 특성상 각 필드의 길이값에 제한이 있었으나, POST를 사용하는 지금은 그렇지 않다.
절대로 받아올 트랙백 메시지의 길이를 임의로 추측하거나 가정하지 말 것. (특히 excerpt의 255자 제한따위.)
5) 옵션
title, excerpt, blog_name 모두 생략가능하다. 즉, url을 제외한 어떠한 것도 안넘어올 수 있다. 따라서 유효한 트랙백 메시지인지 판별할 때에는 url만 가지고 체크할 것. 또한 다른 필드들 값이 반드시 넘어올 것이라고 가정하지 말 것.
6) url
url로 넘어온 값이 반드시 발신처와 일치할 것이라 가정하지 말 것. 트랙백 메시지자체는 단순한 ping신호일 뿐, url은 전혀 다른 제 3의 문서를 가리킬 수도 있다. (물론, 이를 이용해 스팸 트랙백을 걸러내기도 하지만 이는 트랙백의 가능성을 제한하는 일이다. 트랙백 발송 URL의 도메인과 url값에 들어있는 도메인은 서로 달라도 된다.)
7) excerpt
excerpt가 옵션이라서 없을 수도 있다. 또한 블로그 도구마다 excerpt 생성방식이 다양하다. 따라서 만약 트랙백 url의 문서내용이 필요하다면 excerpt를 이용하는 것은 불가. 필요하다면 url을 소켓으로 열고 스크린 스크래핑 기법을 통해 가져오기를 추천한다.
리턴 메시지
트랙백 메시지를 수신한 후, 수신모듈은 반드시 메시지를 리턴해주어야 한다.(그래야 발신처에서 제대로 트랙백이 발송되었는지 확인할 수 있음)
올바르게 수신되었을 때
[xml]
< ?xml version="1.0" encoding="utf-8"?>
[/xml]
문제가 생겼을 때
[xml]
< ?xml version="1.0" encoding="utf-8"?>
[/xml]
9) Auto Discovery
트랙백 수신 문서에는 다음과 같은 트랙백 RDF를 추가해준다.
[html]