[1] FTP を使う場合に、クライアントと串の間の通信に HTTP を用いることがあります。 これはしばしば FTP over HTTP と呼ばれています。串は、 HTTP と FTP のアプリケーション層プロトコル翻訳器 (関門) として動作します。
[30] FTP over HTTP が最も普及した名称とみられます。 正式名称といえるものはなく、 特別な名称なくふわっと使われていることも多いです。
[2] クライアントと串の間は FTP ではなく HTTP なので、 厳密には「over」というべきではないかもしれませんが、この名前が広く慣用されており、 他により適切で普及した名称もありません。
[31] FTP over HTTP の挙動や応用を明確に規定する仕様書は見当たりません。 平成時代の Webブラウザーに遍く実装された事実上の標準でした。
[8] 要求URL には ftp:
URL scheme の絶対URL
を使います >>5, >>7。
[9] Host:
ヘッダーには要求URL
のホストの部分を使います >>5, >>7。FTP の既定のポート番号である
21
を明示しなければならない >>7 (そうしないと HTTP
の既定のポート番号である 80
) と説明するものもあれば、
特に言及のない説明もあり、どう解釈されるのか定かではありません。実装により異なるのかもしれません。
[10] 認証は、HTTP 基本認証の他、要求URLの userinfo 部分の指定でも良いようです >>5。しかし認証を扱えないものや記号が含まれると正しく処理できないもの (クライアントや鯖) など、相互運用性は高くないようです >>7。
[12] GET
によりファイルをダウンロードできます >>5, >>11。
[13] 実装によっては PUT
によりファイルをアップロードできます
>>5。
[24] ディレクトリーを GET
すると、
Webブラウザーからの直接アクセスでディレクトリーを開いた場合のように、
ディレクトリー内のファイル一覧のHTML文書を返します。
[32] そのような HTTP要求を受信したプロキシは、 FTP を使って指定された上流 FTP サーバーにアクセスすることもできますし、 HTTP のまま上流 HTTP プロキシに転送することもできます。 (し、エラーとして拒絶することもできます。)
[3] Web 系の利用者エージェントや鯖で FTP に対応するものの多くは、
本方式にも対応しているようです。
ただし
Webブラウザーからは FTP
対応全体が削除されつづあります。
ftp:
[33] クライアントにとっては HTTP さえ実装すれば FTP に対応する必要がなくなるので便利なのですが、 FTP over HTTP プロキシが手近に利用できるとは限らないので、 結局 FTP も実装しないと使い物にならないという不便があります。
[16] >>15 は逆に FTP の要求を受信して HTTP に変換して処理するようです。
[17] gopher:
や wais:
も同じように串まで
HTTP で通信していたかもしれません。
[19] Issue 11227 - chromium - FTP not working behind (HTTP) Proxy - An open-source project to help move the web forward. - Google Project Hosting ( 版) https://code.google.com/p/chromium/issues/detail?id=11227
[20] 112507 – not asked for password when ftp://user@host through a proxy server ( 版) https://bugzilla.mozilla.org/show_bug.cgi?id=112507
[26] Issue 11227 - chromium - FTP not working behind (HTTP) Proxy - Monorail ( ()) https://bugs.chromium.org/p/chromium/issues/detail?id=11227
[27] Issue 310456 - chromium - FTP not working behind Authenticating HTTP Proxy using NTLM (Forefront TMG) - Monorail ( ()) https://bugs.chromium.org/p/chromium/issues/detail?id=310456
Host:
ヘッダーは必須です。しかしサーバーは絶対URL を採用し、Host:
ヘッダーは無視しなければならないことになっています。 (実効要求URL参照。)