関連: 開発談義, official:トラックバック

Category: RSS

TrackBackとは


ツール

セキュリティ

懸案事項


技術仕様(まとめ) by upk

私になりに理解した内容を、つらつらと。 間違いなく、TrackBack技術仕様書(邦訳)の方が良いんでしょう。

  1. 何か PukiWiki 内のページでリンクした。
  2. そのリンクした URI は、ページ更新のタイミングで取得する。
  3. その URI を使って、ドキュメントを GET する。
  4. GET したドキュメントに埋め込まれた TrackBack Ping URL を取得する。
  5. その TrackBack Ping 用 URL を使って POST して情報を相手サイトに伝達する。

まぁ、こんな流れです。

TrackBack Ping URL の取得方法

TrackBack Ping の送信

上で得た TrackBack Ping URL から、POST メソッドで送信する。

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

これでは、例えば、excerpt に書かれている文字が、UTF-8なのか? EUC-JP なのか? などで、色々と議論されている。

パラメータ

__mode=rss

TrackBack に対応したとするならば、 本文中に、TrackBack Ping URL を埋め込んだ TrackBack Ping URL に、 __mode=rss というクエリーストリングを付加した URI で GET を受信した場合には、 そのドキュメントに対して、継続された議論への RSS 情報を出力するように、 実装しておく必要がある。

http://www.foo.com/mt-tb.cgi/5?__mode=rss
<?xml version="1.0" encoding="iso-8859-1"?>
<response>
<error>0</error>
<rss version="0.91"><channel>
<title>TrackBack Test</title>
<link>http://this.is/the/trackback/item/link/</link>
<description>Description of the TrackBack item</description>
<language>en-us</language>
<item>
<title>TrackBack Demo</title>
<link>http://this.is/the/permalink/</link>
<description>Excerpt</description>
</item>
</channel>
</rss></response>

__mode=view

TrackBack技術仕様書では 定義されていないものの、本家 で 利用されていたので、同じ挙動で実装している。単に、受信した TrackBack を 表示する機能であり、本文中に埋め込んだ TrackBack Ping URL に、 __mode=view というクエリーストリングを付加した GET を受信した場合に、 一覧表示される。

表示順: 受信日時の直近から降順としました。ホットな話題が先頭にくるように...

TrackBack ID

TrackBack ID は、数字だぁ。と定義されているドキュメントも、 ないわけではないものの、明確には定義されていない。 PukiWiki のページ個々に、マッピング用 ID を これがために採番するのもなぁ。FrontPage は1。とか。
なので、そんなマッピングは行っておりません。ページ名の長さに左右されることの ない、常に一定な長さとなる方法にしちゃいました。この方法で、ページ名が重複する ことがあるのなら、逆に、このハッシュは問題です。というところから、採用しちゃいましたけども。 ということで、PukiWiki ユーザでかつ、同じ文字コードで運用している サイト間では、TrackBack ID を、計算することが可能です。 サイト個々でユニークとはなりません。しかし、それが仕様ではないので、 ページを GET することもなく、計算しちゃったり。ということはしておりませんし、 今後、保守を行う上でも、しちゃいけません。

コメント

関連ページ


トップ   編集 凍結解除 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2008-09-14 (日) 08:45:56
Site admin: PukiWiki Development Team

PukiWiki 1.5.3+ © 2001-2020 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u12. HTML convert time: 0.535 sec.

OSDN