httpdがRangeリクエスト(bytes)に対応していないとiphoneから動画再生ができない

ということを知った。iphoneの仕様?

iphoneからアクセスして、realサーバでは動画の再生が出来るけど、とあるキャッシュサーバでは動画の再生ができないことがあった。tcpdump/ngrepでpacket captureしてみるとキャッシュサーバのレスポンスヘッダから"Accept-Range: bytes"が欠けていた。(これはこのキャッシュサーバの仕様でRangeリクエストに対応していないから)

iphoneのリクエストヘッダを見ていると、動画再生時にまず"Range: bytes=0-1" を送って、Rangeリクエストに対応しているかチェックしている様子。そのときに"206 Partial Content" が返ってこない場合、Rangeリクエストに対応していないと判断して、動画の再生を諦めるっぽ。