TrackBack技术规范[转]

原创 2005年03月02日 18:26:00
 TrackBack技术规范 天气:    时间:2005-02-28 21:06:41
TrackBack技术规范  原文是
TrackBack Technical Specification
,此处是译文。
TrackBack 技术规范
名称

作者

版本

描述

发送一个TrackBack Ping

取回TrackBack Pings

TrackBack Ping URLs的自动发现

例子

TrackBack实现例程

自动发现的例程

变动

1.1 (2002年10月10日)

1.0 (2002年8月28日)

致谢

名称
mttrackback - TrackBack 技术规范
作者
Benjamin and Mena Trott, movabletype.org
版本
1.1
描述
本文描述了TrackBack, 一个点对点通信和网站间互相通告的框架. TrackBack的中心思想是TrackBack ping的概念, 从本质上讲,TrackBack ping是一个请求,通告“资源A与资源B相关,或有链接到资源B.” 一个TrackBack “资源” 用一个TrackBack Ping URL表示, 这是一个标准的URI.
利用TrackBack,站点间可以互相通告相关的资源. 例如,如果博客(weblogger)甲希望通知博客乙他写了一些有趣的/相关的/骇人听闻的文字,甲发送一个TrackBack ping给乙。这完成了两件事:
乙能自动列出那些引用他的某篇文章的网站,到他网站的访问者能读到网络上所有与此文相关的文章,包括甲的文章。
ping在他的文章和你的文章间提供了一种稳固的、直接的链接,而不是那种依赖于外部行为(某人点击那个连接)的非直接连接(如反向连接referrer)。
发送一个TrackBack Ping
TrackBack使用REST(Representational State Transfer,http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm)模式工作, 请求通过标准的HTTP调用传送。要发送一个TrackBack ping, 客户端向服务器端发送一个标准的HTTP请求,然后接收一个简单XML格式的应答(详见下述).
在TrackBack系统中,接收TrackBack pings的URL叫TrackBack Ping URL.一个典型的TrackBack Ping URL如
http://www.infomall.cn/cgi-bin/mallgate/20040514/http://www.foo.com/mt-tb.cgi/5
, 其中5是TrackBack ID. 服务器端可以用任何有意义的格式来定义TrackBack Ping URL;客户端不应该只限于特定的格式.
为了发送一个ping, 客户端发送一个POST格式的HTTP请求到TrackBack Ping URL. 请求的内容的content type应是application/x-www-form-urlencoded. 例如, 到
http://www.infomall.cn/cgi-bin/mallgate/20040514/http://www.foo.com/mt-tb.cgi/5
的ping请求可能看起来象:POST http://www.foo.com/mt-tb.cgi/5
Content-Type: application/x-www-form-urlencoded
title=Foo+Bar&url=http://www.bar.com/&excerpt=My+Excerpt&blog_name=Foo
注意: 在旧版本的TrackBack规范中,ping是用GET格式的HTTP请求发送的. 这种方式将不再支持; 2003年1月发布的Movable Type系统将会去掉对GET方式的支持。.
可能的参数包括:
title
文章的标题
excerpt
文章的摘要. 在Movable Type系统中, 如果摘录信息超过255个字符将会被截断为252个字符, 并在后面增加 ...三个字符.
url
文章的永久连接. 象其它永久连接一样,这个连接应可能准确地在页面中定位文章的入口,因有疑问时这个链接会用到。
blog_name
发表文章的blog的名称。
在Movable Type系统中, 在上述的参数中只有 url 是必须的. 如果 title 没有提供,, url 的值将被用作标题.
对上述请求的应答信息,以XML格式编排,从而能实现应用层的错误检查。(HTTP层的错误将会这样返回--例如,如果TrackBack URL 所指的资源在服务器上已经不存在,状态码404 将会返回).
一个成功的ping将会返如下应答:
0
一个失败的ping将会返如下应答:
1
The error message
当然,应用程序应该允许将来根据需要增加字段,但应答的 XML 结构保持不变.
取回TrackBack Pings
要取回某个特定TrackBack Ping URL收到的ping,向它发一个GET格式的HTTP请求,请求字符串(query string)是 ?__mode=rss. 在规范的将来修订中,--一旦从POST转换到GET的过渡期结束--这将非常简单,向TrackBack Ping URL发送一个GET请求,将返回一列ping.
一个GET请求样例如下::GET http://192.168.1.103/mt/mt-tb.cgi/3?__mode=rss
对此请求的应答,要么返回如上所述的错误信息,要么返回一列用RSS规范格式标志的TrackBack pings, 整个应答内容的覆巢无根元素是 .
例如:
0
TrackBack Test
http://this.is/the/trackback/item/link/
Description of the TrackBack item
en-us
TrackBack Demo
http://this.is/the/permalink/
Excerpt
在标签 和 之间的部分,都是真实的RSS数据; 剩余的部分都是应答内容的包装,处理时可以忽略.
TrackBack Ping URLs的自动发现
TrackBack客户端需要一种方法,来确实一个特定的URL或blog文章的TrackBack Ping URL. 服务器在生成页面时应内嵌RDF; RDF 描述关于该文章的元数据,允许客户端自动发现TrackBack Ping URL.
RDF样例如下::
注意: 由目前的检查器将嵌入XHTML页面的RDF信息视为不合规范,要通过检查需要将上述的RDF信息用注释符括起来:
-->
这不是一个完美的解决方案,但是作为一个临时的应对措施它可正常工作.
其中的dc: 元素是标准的Dublin Core 元素; trackback:ping元素来自RSS 1.0/2.0的TrackBack模块,参见
http://www.infomall.cn/cgi-bin/mallgate/20040514/http://madskills.com/public/xml/rss/module/trackback/
.
给定一个URL my_url, 客户按下列步聚来寻找TrackBack Ping URL:
发送GET格式的HTTP请求,取回 my_url对应的页面的内容.
扫描页面内容,查找内嵌的RDF. 页面中可能嵌有多处RDF--客户端要找到 dc:identifier等于my_url的那块RDF信息.
从RDF块中抽取trackback:ping值,这就是TrackBack Ping URL.
客户端一旦确实了TrackBack Ping URL, 它就可以发送TrackBack ping了 (参见
发送 TrackBack Ping
).
自动发现的代码样例参见
例子
.
例子
TrackBack实现样例
为帮助那些有远见的开发人员在他们的系统中实现 TrackBack , 我们发布了一个TrackBack的独立的实现,它不依赖于Movable Type系统. 它可接收通过HTTP请求发送来的ping, 将ping存放在本地的文件系统中, 且可以返回某个特定TrackBack项(文章)的一列RDF格式的ping. 如果你要求,它还可以静态地产生 RSS文件. 例如,要将最近的15个ping列在工具条,这项功能就会泒上用场。
这个独立的TrackBack实现可从
http://www.infomall.cn/cgi-bin/mallgate/20040514/http://www.movabletype.org/downloads/tb-standalone.tar.gz
下载.
它的发行遵循 Artistic License. Artistic License条款的描述在
http://www.infomall.cn/cgi-bin/mallgate/20040514/http://www.perl.com/language/misc/Artistic.html
.
它的安装和使用指令说明在
http://www.infomall.cn/cgi-bin/mallgate/20040514/http://www.movabletype.org/docs/tb-standalone.html
.
自动发现的代码样例use LWP::UserAgent;
sub discover_tb {
  my $url = shift;
  my $ua = LWP::UserAgent->new;
  $ua->agent('TrackBack/1.0'); 
  $ua->parse_head(0);  ## So we don't need HTML::HeadParser
  $ua->timeout(15);
  ## 1. Send a GET request to retrieve the page contents.
  my $req = HTTP::Request->new(GET => $url);
  my $res = $ua->request($req);
  return unless $res->is_success;
  ## 2. Scan te page contents for embedded RDF.
  my $c = $res->content;
  (my $url_no_anchor = $url) =~ s/#.*$//;
  my $item;
  while ($c =~ m!()!sg) {
    my $rdf = ;
    my($perm_url) = $rdf =~ m!dc:identifier="([^"]+)"!; 
    next unless $perm_url eq $url || $perm_url eq $url_no_anchor;
    ## 3. Extract the trackback:ping value from the RDF.
    ## We look for 'trackback:ping', but fall back to 'about'
    if ($rdf =~ m!trackback:ping="([^"]+)"!) {
      return ;
    } elsif ($rdf =~ m!about="([^"]+)"!) {
      return ;
    }
  }
}
这段Perl定义了一个过程 discover_tb. 给定一个 URL, 它会试图找到与此URL相对应的TrackBack Ping URL. 如果找到了,它会返回 TrackBack Ping URL; 否则返回 undef.
变动
1.1 (2002年10月10日)
在此版本中,TrackBack pings 的发送用 POST 格式的HTTP请求代替 GET格式的请求.旧版本的GET方式将不在支持,MT中从2003年1月起也不再提供对GET方式的支持。
在RDF中,现在TrackBack Ping URL应在trackback:ping 元素中保存, 而不是原先的 rdf:about元素.
修改了 TrackBack Ping URL的样例的格式,用 PATH_INFO 代替了请求串(query string).
内嵌的供自动发现使用的RDF不再导致页面检查时出错。
增加了自动发现的样例代码.
1.0 (2002年8月28日)
规范首次发布.
致谢
感谢Paul Prescod和其他朋友,他们的指导让TrackBack更符合REST.
Copyright © 2001, 2002 Ben Trott and Mena Trott. All Rights Reserved. Posted by Hilton at November 7, 2003 11:28 AM |
TrackBack

.Net平台开发的技术规范与实践精华总结 (转)

一、代码规范 良好的代码风格来自于同一的代码规范。风格良好的代码不仅具备可读性和可维护性,同时也给人行云流水、赏心悦目之快感。 据Microsoft公司统计,基于微软平台的开发中,有70-80%的...

【转】JavaEE的13种核心技术规范

转载自 kitesf 最终编辑 kitesf J2EE平台由一整套服务(Services)、应用程序接口(APIs)和协议构成,它对开发基于Web的多层应用提供了功能...

J2EE技术规范(八)——JMS(消息,域)

老样子,继续完善J2EE技术规范,这次内容主要是写个JMS。 理解面向消息的中间件 定义:消息 (1)消息是可编程实现两端通信的机制 (2)一些消息技术如: TCP/IP...
  • yi_zz
  • yi_zz
  • 2012年12月14日 15:47
  • 3262

比较清晰的OLE技术规范

在word文档里,当插入一个图片或是电子表格,从而生成一个复合文档,这其中用到ole规范 OLE文档:完善了早期的混合文档功能,不仅支持简单链接和嵌入,还支持在位激活、拖放等功能 有一片文章你可以...

J2EE技术规范(三)——Servlet的生命周期与接口

一、Servlet概览 什么是Servlet (1) Servlet是提供基于协议的请求/响应服务的java类 (2) HTTP servlets是能被HTTP命令调用的servle...
  • yi_zz
  • yi_zz
  • 2012年12月03日 20:16
  • 3840

J2EE技术规范(五)——JSP(出错页,Forward,Include,标签)

一、声明JSP出错页面 (1) Page directive 的errorPage属性用于指定URL,该URL可处理JSP抛出的异常 (2)URL是相对于Web应用的跟路径。 (3)...
  • yi_zz
  • yi_zz
  • 2012年12月08日 23:18
  • 3379

Bean Validation 技术规范特性概述

原文出处:http://www.ibm.com/developerworks/cn/java/j-lo-beanvalid/#icomments 概述 Bean Validation 规范 Bean ...

J2EE 13个技术规范

一、简介 J2EE(Java 2 Platform Standard Edition)是Java2的企业版,是Java语言的一部分,另外两个是J2SE和J2ME。主要用于分布式的网络程序的开发,为...

J2EE的13个技术规范

在学习J2EE(Java 2 Enterprise Edition,Java2平台企业版)之初,需要学习J2EE的13个核心技术规范.他们是JDBC,JNDI,EJB,RMI,JavaIDL/CORB...

Java EE的十三个技术规范

Java 是一种非常棒的语言,健壮,跨平台运行,屏蔽了具体的平台环境的要求,也就是说只要支持java 虚拟机,就可以运行java程序。 下面,我们一起学习一下J2EE的十三种技术规范。 一、J...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:TrackBack技术规范[转]
举报原因:
原因补充:

(最多只允许输入30个字)