/
801.txt
65 lines (47 loc) · 4.11 KB
/
801.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
[1] [[FTP]] を使う場合に、[[クライアント]]と[[串]]の間の通信に [[HTTP]] を用いることがあります。
これはしばしば [DFN[[[FTP over HTTP]]]] と呼ばれています。[[串]]は、 [[HTTP]] と [[FTP]]
の[[アプリケーション層プロトコル]]翻訳器 ([[関門]]) として動作します。
;; [2] [[クライアント]]と[[串]]の間は [[FTP]] ではなく [[HTTP]] なので、「over」
という表現は正しくないかもしれません。
* プロトコル
[8] [[要求URL]] には [CODE(URI)@en[[[ftp:]]]] [[URL scheme]] の[[絶対URL]]
を使います [SRC[>>5, >>7]]。
[9] [CODE(HTTP)@en[[[Host:]]]] [[ヘッダー]]には[[要求URL]]
の[[ホスト]]の部分を使います [SRC[>>5, >>7]]。[[FTP]] の[[既定のポート番号]]である
[CODE[[[21]]]] を明示しなければならない [SRC[>>7]] (そうしないと [[HTTP]]
の[[既定のポート番号]]である [CODE[[[80]]]]) と説明するものもあれば、
特に言及のない説明もあり、どう解釈されるのか定かではありません。実装により異なるのかもしれません。
;; [18] [[HTTP]] 本体仕様によれば[[絶対URL]]を[[要求URL]]とする場合でも、
[CODE(HTTP)@en[[[Host:]]]] [[ヘッダー]]は必須です。しかし[[サーバー]]は[[絶対URL]]
を採用し、 [CODE(HTTP)@en[[[Host:]]]] [[ヘッダー]]は無視しなければならないことになっています。
([[実効要求URL]]参照。)
[10] [[認証]]は、[[HTTP]] [[基本認証]]の他、[[要求URL]]の [[userinfo]]
部分の指定でも良いようです [SRC[>>5]]。しかし[[認証]]を扱えないものや記号が含まれると正しく処理できないもの
([[クライアント]]や[[鯖]]) など、[[相互運用性]]は高くないようです [SRC[>>7]]。
[12] [CODE(HTTP)@en[[[GET]]]] によりファイルを[[ダウンロード]]できます [SRC[>>5, >>11]]。
[13] 実装によっては [CODE(HTTP)@en[[[PUT]]]] によりファイルを[[アップロード]]できます
[SRC[>>5]]。
* 実装
[3] [[Web]] 系の[[利用者エージェント]]や[[鯖]]で [[FTP]] に対応するものの多くは、
本方式にも対応しているようです。
[4] [[FTP]] [[クライアント]]は本方式に対応していないものが多いようです。
* メモ
[REFS[
- [5] [CITE@ja[Use telnet '''['''telnet雑技室''']''']] ([TIME[2005-02-24 21:18:33 +09:00]] 版) <http://www.nurs.or.jp/~telnet/tips.html>
- [6] [CITE@ja[wgetのFTPプロキシ | tuneoの日記 | スラッシュドット・ジャパン]] ([TIME[2015-03-16 17:31:45 +09:00]] 版) <http://slashdot.jp/~tuneo/journal/445012/>
- [7] [CITE@ja[FTP over HTTP Explained | McAfee Communities]] ([TIME[2015-03-16 17:31:52 +09:00]] 版) <https://community.mcafee.com/docs/DOC-4921>
- [11] [CITE@en[mod_proxy_ftp - Apache HTTP Server Version 2.4]] ([TIME[2015-01-02 00:30:56 +09:00]] 版) <http://httpd.apache.org/docs/2.4/mod/mod_proxy_ftp.html>
- [14] [CITE@ja[UNIX:WINDOWS:FTP over HTTP通信の取り扱い方について | サポート Q&A:トレンドマイクロ]] ([[Trend Micro - Core Web Development MUC ;-)]] 著, [TIME[2015-03-16 17:38:47 +09:00]] 版) <http://esupport.trendmicro.com/solution/ja-jp/1304243.aspx>
]REFS]
[16] >>15 は逆に [[FTP]] の要求を受信して [[HTTP]] に変換して処理するようです。
[REFS[
- [15] [CITE[Features/FtpRelay - Squid Web Proxy Wiki]] ([TIME[2015-03-16 17:42:06 +09:00]] 版) <http://wiki.squid-cache.org/Features/FtpRelay>
]REFS]
[17] [CODE(URI)@en[[[gopher:]]]] や [CODE(URI)@en[[[wais:]]]] も同じように[[串]]まで
[[HTTP]] で通信していたかもしれません。
[19] [CITE[Issue 11227 - chromium - FTP not working behind (HTTP) Proxy - An open-source project to help move the web forward. - Google Project Hosting]]
([TIME[2015-03-22 01:00:14 +09:00]] 版)
<https://code.google.com/p/chromium/issues/detail?id=11227>
[20] [CITE@en[112507 – not asked for password when ftp://user@host through a proxy server]]
([TIME[2015-08-28 18:37:01 +09:00]] 版)
<https://bugzilla.mozilla.org/show_bug.cgi?id=112507>