October 09, 2003

MT Trackback implementation

Discreet Blog 8.10.2003

先日小堀さんより「Movable Type から PyCS にトラックバック ping を送信すると失敗するう!」という連絡をいただきまして調べてみたところ、Movable Type 2.64 からの トラックバック ping が POST じゃなくて GET メソッドで送られているのですわ。ナンですか、これ?仕様書には次のようにはっきり書かれているのですけど。
Note: in older versions of the TrackBack specification, pings are sent using HTTP GET requests. This behavior is deprecrated; support for GET requests will be removed from the Movable Type implementation in January of 2003.
ちなみに Movable Type 2.64 のリリースは2003年5月ね。さらに小堀さんにコードを調べていただいたところ、該当部分はこんなん書かれてるそうです

なるほどこれは仕様書とは違う実装になっているわけで、修正すべきですね。

ただこういうコードになっている理由はなんとなくわかります。Trackback URL に ? がついているということは、素直にやると

POST /trackback?entry_id=111 Content-Type: application/www-form-urlencoded

blog_name=hogehoge&title=fugafuga

みたいになるわけで、STDIN からデータをとりつつ、entry_id は QUERY_STRING からとるという、ちょっとヘンな実装に(サーバサイドが)なるので、GET にしたのでしょう。

tb-standalone や MT ではこうした問題をさけるために、entry_id は PATH_INFO からとるようにしています。

しかしサーバ側の実装は、送る側は考えるべきでないともスペックには書いてあるわけで、意図はわかるけども、実装としてはこうした余計な処理はすべきでないですね。(仕様書がある以上は)

Posted by miyagawa at October 9, 2003 01:57 AM | Permalink | Comments (0) | TrackBack(0)
Comments
Trackbacks
TrackBack URL for this entry: http://blog.bulknews.net/mt3/mt-tb.cgi/444
Post a comment