/
801.txt
109 lines (79 loc) · 5.86 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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
[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]]。
[24] [[ディレクトリー]]を [CODE(HTTP)@en[GET]] すると、
[[Webブラウザー]]からの直接アクセスで[[ディレクトリー]]を開いた場合のように、
[[ディレクトリー]]内の[[ファイル]]一覧の[[HTML文書]]を返します。
* 実装
[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>
[FIG(quote)[
[FIGCAPTION[
[22] [CITE@en[195242 – Chimera sends HTTP commands to FTP proxy when accessing FTP URLs]]
([TIME[2015-08-28 18:44:28 +09:00]] 版)
<https://bugzilla.mozilla.org/show_bug.cgi?id=195242>
]FIGCAPTION]
> 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.
]FIG]
[FIG(quote)[
[FIGCAPTION[
[23] [CITE@ja[HTTP:FTP over HTTPでURLにパスワードを指定できない | サポート Q&A:トレンドマイクロ]]
([[Trend Micro - Core Web Development MUC ;-)]] 著, [TIME[2015-12-26 17:00:16 +09:00]] 版)
<http://esupport.trendmicro.com/solution/ja-jp/1305963.aspx>
]FIGCAPTION]
> FTP over HTTPのパスワード設定でユーザ名とパスワードを設定していた場合に、ftp://user:pass@ftp.abc.com/形式でのアクセスをした際にuser,passではなく設定ファイルにて設定されたユーザー名、パスワードでのアクセスになってしまう。
> ver. 3.6 Patch1での既知問題となっております。
> 本問題に関しましてはver. 3.6 Patch2にて解決しております。
]FIG]
[FIG(quote)[
[FIGCAPTION[
[25] [CITE[lftp.1]]
( ([TIME[2016-05-19 18:00:12 +09:00]]))
<http://lftp.yar.ru/lftp-man.html>
]FIGCAPTION]
> HFTP is ftp-over-http-proxy protocol. It can be used
> automatically instead of FTP if ftp:proxy is set to `http://proxy'''[''':port''']''''.
]FIG]