HTTPサーバの構築条件や動作条件を見直していて、今の条件ではWebDAVのメソッドが完全にはサポートされておらず、PROPFINDやOPTIONSは実装されていないことに気付いた。しかも、他のWebDAVメソッドも有効になっていない。それでも今まで問題なく動いていたので、どうしてか調べてみると、使っているCal/CardDAVサーバが自前でWebDAVを実装しているとのこと。

何とも不思議だ。CGIプログラムがHTTPサーバにメソッドを追加することができるのか。普通に考えれば、サポートしていないメソッドがHTTPサーバに来た時点でエラーが返るはずだが。。。しかも、HTTPサーバは何種類もあるのに使えているということは、共通の手順があるのだろうか。

Cal/CardDAVサーバのソースを調べれば謎は解決するのだろうが、今は面倒なのでやらない。

ソースを見て、Cal/CardDAVサーバ内にWebDAVの機能があることは分かった。問題は、どうやってそれがHTTPサーバから呼ばれるようにしているかだ。(11:07)

謎は大体解けた。どういう理由かは分からないが、HTTPサーバは、CGIプログラムが存在する場合、それにHTTPメソッドも含めて「丸投げ」するようだ。

例:

curl -T /dev/null http://localhost/tmp/test.php

CGIプログラム/tmp/test.phpに、"PUT /tmp/test.php HTTP/1.1"で始まるHTTP要求が送信される(/tmp/test.phpというファイルが作成される訳ではない)。

拡張性には富むが、これでいいのかちょっと疑問だ。いや、現実に世の中のサーバーがこの仕様で動いているのだから、いいに違いはないのだが。。。(12:28)

  •   0
  •   0

コメントを書く

名前    

メール 

URL