FTP over HTTP

FTP over HTTP

[1] FTP を使う場合に、クライアントの間の通信に HTTP を用いることがあります。 これはしばしば FTP over HTTP と呼ばれています。は、 HTTPFTPアプリケーション層プロトコル翻訳器 (関門) として動作します。

[2] クライアントの間は FTP ではなく HTTP なので、 厳密には「over」というべきではないかもしれませんが、この名前が広く慣用されており、 他により適切で普及した名称もありません。

プロトコル

[8] 要求URL には ftp: URL scheme絶対URL を使います >>5, >>7

[9] Host: ヘッダーには要求URLホストの部分を使います >>5, >>7FTP既定のポート番号である 21 を明示しなければならない >>7 (そうしないと HTTP既定のポート番号である 80) と説明するものもあれば、 特に言及のない説明もあり、どう解釈されるのか定かではありません。実装により異なるのかもしれません。

[18] HTTP 本体仕様によれば絶対URL要求URLとする場合でも、 Host: ヘッダーは必須です。しかしサーバー絶対URL を採用し、 Host: ヘッダーは無視しなければならないことになっています。 (実効要求URL参照。)

[10] 認証は、HTTP 基本認証の他、要求URLuserinfo 部分の指定でも良いようです >>5。しかし認証を扱えないものや記号が含まれると正しく処理できないもの (クライアント) など、相互運用性は高くないようです >>7

[12] GET によりファイルをダウンロードできます >>5, >>11

[13] 実装によっては PUT によりファイルをアップロードできます >>5

[24] ディレクトリーGET すると、 Webブラウザーからの直接アクセスでディレクトリーを開いた場合のように、 ディレクトリー内のファイル一覧のHTML文書を返します。

実装

[3] Web 系の利用者エージェントFTP に対応するものの多くは、 本方式にも対応しているようです。

[4] 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>

[22] 195242 – Chimera sends HTTP commands to FTP proxy when accessing FTP URLs ( 版) <https://bugzilla.mozilla.org/show_bug.cgi?id=195242>

Fetch supports 8 different FTP-proxy

protocols. ncftp supports 7. That's probably part of the reason IE simply uses

the HTTP proxy and Safari punts on ftp URLs.

[23] HTTP:FTP over HTTPでURLにパスワードを指定できない | サポート Q&A:トレンドマイクロ (Trend Micro - Core Web Development MUC ;-) 著, 版) <http://esupport.trendmicro.com/solution/ja-jp/1305963.aspx>

FTP over HTTPのパスワード設定でユーザ名とパスワードを設定していた場合に、ftp://user:pass@ftp.abc.com/形式でのアクセスをした際にuser,passではなく設定ファイルにて設定されたユーザー名、パスワードでのアクセスになってしまう。

ver. 3.6 Patch1での既知問題となっております。

本問題に関しましてはver. 3.6 Patch2にて解決しております。

[25] lftp.1 ( ()) <http://lftp.yar.ru/lftp-man.html>

HFTP is ftp-over-http-proxy protocol. It can be used

automatically instead of FTP if ftp:proxy is set to `http://proxy[:port]'.

[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>