/
389.txt
867 lines (630 loc) · 43.3 KB
/
389.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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
[125] [DFN[[CODE(URI)@en[[[file:]]]]]] は、[[ファイル]]を表す [[URL scheme]]
です。
* 仕様書
[126] かつては [[RFC 1738]] で定義されていましたが、厳密には様々な[[利用者エージェント]]により様々に実装されており、
実情を反映していませんでした。現在では公式に [[RFC 1738]] も廃止され、名実共に標準不在となっています。
[7] [CODE(URI)@en[[[file:]]]] の構文や意味、処理は各システムそれぞれの実装や慣習その他の事情に依存するものであり、
一切標準化の対象とするべきではないと考える人もいます。
* 構文
[127] [[URL scheme]] である「[CODE(URI)@en[[[file:]]]]」の後に[[ファイル名]]を指定しますが、
この[[ファイル名]]は他の [[URL]] と似たものから各 [[OS]] の[[ファイル名]]の表記法に従ったもの、
あるいはその混合や折衷など様々な形が知られています。
[128] [[ファイル名]]の部分はその環境における[[ファイル・システム]]上の位置をそのまま表記することもあれば、
[[相対参照]]のようなものを使うことや、[[利用者エージェント]]が仮想的に[[ファイル]]のように見せて提供するものを示す文字列であることもあります。
* 素片識別子
[129] 通常の [[URL]] の規則に従い[[素片識別子]]が利用可能であることが一般的ですが、
[CODE(URI)[[['''#''']]]] も[[ファイル名]]の一部と解されることもあります。
* 歴史
** RFC 1630
[REFS[
- [90] [CITE@en[RFC 1630 - Universal Resource Identifiers in WWW: A Unifying Syntax for the Expression of Names and Addresses of Objects on the Network as used in the World-Wide Web]]
<http://tools.ietf.org/html/rfc1630#page-19>
]REFS]
[91] [[IETF]] の [[RFC]] として最初に [CODE(URI)@en[[[file:]]]] [[URL]]
を定義したのは [[RFC 1630]] でした。
[95] [CODE(URI)@en[[[file:]]]] は他の [[URL scheme]] とは違ってどこでも同義ではなく、
解釈する[[ホスト]]によって異なるという点が特殊です。しかし[[ローカル・ファイル・システム]]の[[ファイル]]を指す
[[URL]] は必要性があるために定義したとされています。
[92] 構文は [CODE(URI)@en[[[ftp:]]]] と同じながら、 [CODE(URI)[[[/]]]] は[[ディレクトリー]]の[[分離子]]を表すものとされていました。
なぜか [[BNF]] 構文は示されていませんでした。
[93] [[authority]] については、 [CODE(URI)@en[[[file:]]]] [[URL]]
は解釈により[[ホスト]]によって指すものが変わり混乱の元であり、
有害な場合もあるため、異なる[[ホスト]]のものを指すことを明確にするために利用可能となっている、
と説明されていました。また、他の[[ホスト]]の[[ファイル]]にアクセスする手段があればそれを使ってもよいとされていました。
[94] 特別な [[authority]] である [CODE(URI)[[[localhost]]]] は、 [[authority]]
が空であるのと同義であり、どの[[ホスト]]であってもその[[ホスト]]を表すとされていました。
[123] これはどの[[ホスト]]でも共通で[[マウント]]されているような[[ファイル]]や、
[CODE(file)[[[/etc/hosts]]]] のようにおおくの[[ホスト]]で共通に存在する[[ファイル]]に有用とされていました。
** RFC 1738
[REFS[
- [101] [CITE@en[RFC 1738 - Uniform Resource Locators (URL)]]
-- [96] '''<http://tools.ietf.org/html/rfc1738#section-3.10>'''
-- [102] <http://tools.ietf.org/html/rfc1738#page-18>
]REFS]
[98] 次に [CODE(URI)@en[[[file:]]]] [[URL]] を定義したのは [[IETF]] [[標準化過程]] [[RFC]] であった [[RFC 1738]]
でした。 [[IANA]] にも登録されました。
[99] [[authority]] は [[FQDN]]、[[path]] はその [[FQDN]] で表される[[ホスト]]における[[パス]]を表すとされていました
[SRC[>>96]]。
[100] 構文は次のように定義されていました [SRC[>>102]]。
[PRE(ABNF code)[
fileurl = "file://" [ host | "localhost" ] "/" fpath
]PRE]
[103] [CODE(URI)@en[[[localhost]]]] や[[空文字列]]はやはりその[[ホスト]]を表すとされていました [SRC[>>96]]。
** draft-hoffman-file-uri (2004)
[REFS[
- [106] [CITE@en[draft-hoffman-file-uri-03 - The file URI Scheme]]
<http://tools.ietf.org/html/draft-hoffman-file-uri-03>
]REFS]
[107] [[RFC 1738]] の次の [[RFC 2396]] は [[URL scheme]] の定義を含んでおらず、
[CODE(URI)@en[[[file:]]]] [[URL]] についても個別の [[Internet Draft]]
が出版されましたが、 [[RFC]] 化には至らず現在まで放置されています。
[108] 現在では [[IETF]] 的には公式には [[RFC 1738]] は[[廃止]]されており、
[CODE(URI)@en[[[file:]]]] [[URL]] は標準不在となっています。
[109] この [[Internet Draft]] は基本的には [[RFC 1738]] の定義を引き継いでいますが、
次のような記述が追加されています。
- [110] システム間やシステム内で [CODE(URI)@en[[[file:]]]] [[URL]] の互換性が無いことが多く、
この問題を解決しないでよくあるものを説明するに留める
- [111] [[ディレクトリー]]を表すときは [CODE(URI)[[[/]]]] で終えることが多いが、必ずではない
- [112] [[ドライブ]]は [CODE(URI)[c:]] だったり [CODE(URI)[c|]] だったり [CODE(URI)[c]] だったりする
- [113] [[authority]] は [[FQDN]] とされているが、実際には従っていないことが多く、 [[authority]]
自体ないこともある
- [114] [[ファイル名]]の[[文字符号化]]は様々なので、実装は [[Unicode]] と相互変換するのが望ましい
** RFC 3986
[132] あくまで例示としてではありますが、 [[RFC 3986]] は、 [CODE(URI)@en[[[file:]]]] [[URL]]
では [[authority]] の省略、空の [[host]]、 [CODE(URI)[[[localhost]]]] はいずれも当該[[利用者]]の[[計算機]]を指すものと定義されている、
と述べています。
[REFS[
- [133] [CITE@en[RFC 3986 - Uniform Resource Identifier (URI): Generic Syntax]] ([TIME[2011-08-16 18:56:43 +09:00]] 版) <http://tools.ietf.org/html/rfc3986#page-21>
]REFS]
* 関連
[104] 遠隔の[[ファイル]]にアクセスする[[プロトコル]]や[[ファイル・システム]]は大抵専用の
[[URL scheme]] が存在しています。例: [CODE(URI)@en[[[ftp:]]]], [CODE(URI)@en[[[nfs:]]]],
[CODE(URI)@en[[[afs:]]]], [CODE(URI)@en[[[smb:]]]]
[105] [[Webブラウザー]]などのシステムに組み込まれた特別な[[ファイル]]については専用の
[[URL scheme]] が存在することがあります。例: [CODE(URI)@en[[[about:]]]],
[CODE(URI)@en[[[res:]]]], [CODE(URI)@en[[[resource:]]]], [CODE(URI)@en[[[chrome:]]]],
[CODE(URI)@en[[[chrome-extension:]]]], [CODE(URI)@en[[[shell:]]]],
[CODE(URI)@en[[[moz-icon:]]]], [CODE(URI)@en[[[rom:]]]], [CODE(URI)@en[[[device:]]]]
* メモ
[57] [[DOS]] ・ [[Windows]] 系の [CODE(URI)[file:]] URI
の形式の色々:
- 通常のファイル
-- [CODE(ABNF)[[[authority]]]] の部分
--- 空の [CODE(ABNF)[authority]] ([SAMP(URI)[file:///c:/]] など)
--- [CODE(URI)[[[localhost]]]] ([SAMP(URI)[file://localhost/c:/]] など)
--- ドライブ名 ([SAMP(URI)[file://c:/]] など)
--- なしで、斜線1つから ([SAMP(URI)[file:/c:/]] など)
--- なしで、直接ドライブ名に ([SAMP(URI)[file:c:/]] など)
-- ドライブ名の部分
--- 大文字か、小文字か
---- 大文字
---- 小文字
--- 記号
---- コロン ([SAMP(URI)[file:///c:/]] など)
---- [[百分率符号化]]されたコロン ([SAMP(URI)[file:///c%3A/]] など)
---- 縦棒 ([SAMP(URI)[file:///c|/]] など)
---- [[百分率符号化]]されたコロン ([SAMP(URI)[file:///c%7C/]] など)
---- 省略 ([SAMP(URI)[file:///]] など)
-- 経路 (ファイル名・ディレクトリ名)
--- 区切り文字
---- 斜線 ([SAMP(URI)[file:///c:/windows/explorer.exe]] など)
---- 逆斜線 ([SAMP(URI)[file:///c:\windows\explorer.exe]] など)
---- 百分率符号化された逆斜線 ([SAMP(URI)[file:///c:%5Cwindows%5Cexplorer.exe]]
など)
---- 混在している場合
---- 複数個連続する場合 ([SAMP(URI)[file:///c://windows///explorer.exe]] など)
--- 大文字と小文字
---- ファイル・システムにおける大文字・小文字の使い分けと同じもの
([SAMP(URI)[file:///C:/WINDOWS/EXPLORER.EXE]] など)
---- ファイル・システムにおける大文字・小文字の使い分けと違うもの
([SAMP(URI)[file:///c:/wIndoWs/eXplorer.eXe]] など)
--- 百分率符号化
---- 百分率符号化されたもの
----- 使用しているシステムの内部文字コード
([[Windows-31J]] や [[UTF-16]] など) によるもの
----- 使用しているシステムの外部文字コード
([[Windows-31J]] など) によるもの
----- [[UTF-8]] によるもの
---- 百分率符号化されていないもの
----- URI の予約文字が含まれないもの
----- URI の予約文字が含まれるもの
([SAMP(URI)[file:///C:/Example #1/Test #2.txt]] など)
----- URI で使えない文字が含まれるもの
([SAMP(URI)[file:///C:/Program Files/]] など)
--- [[長いファイル名]]
---- 普段使用されるファイル名 ([[長いファイル名]])
---- [[VFAT]] などにおける互換性のための[[短いファイル名]]
---- 経路中に混在する場合
--- ディレクトリを表す場合、末尾に経路区切り記号をつけるか否か
- 特殊なファイル・経路
-- [CODE(file)[\\.\]] から始まる経路に対応するもの
([[Win32]] で[[装置]]ファイルに対応)
-- [CODE(file)[\\?\]] から始まる経路に対応するもの
([[Win32]] で局所ファイルに対応)
-- 末尾が [CODE(file)[.]] や[[間隔]] (任意個)
である経路に対応するもの ([[Win32]] [[API]] で普通無視される)
-- ドライブ指定以外で [CODE[:]] を含む経路に対応するもの
([[NTFS]] の [[stream]] の指定に対応)
-- [[装置]]ファイル名が含まれるもの
-- 仮想ファイル (>>41 など)
- ネットワーク上のファイル
-- [CODE(ABNF)[authority]] を使用 ([SAMP(URI)[file://host/path/to/file]] など)
- 相対参照 (真の相対参照, 絶対 URI 参照の仲の
[CODE(ABNF)[[[path]]]] が実は相対参照)
-- [CODE(URI)[.]] (同じ階層)
-- [CODE(URI)[..]] (一つ上の階層)
-- [CODE(URI)[...]] (二つ上の階層) など、更に多い場合
-- [SAMP(URI)[foo/not-found/../baz]] ([SAMP(file)[not-found]]
は実は不存在) のような場合
-- ドライブを超えた相対参照 (>>48 など)
-- [CODE(ABNF)[[[scheme]]]] や斜線はあるが、実は相対参照 (>>52 など)
-- 相対参照に[[ドライブ文字]]を付けたもの ([CODE(example)[C:System32\Drivers]] など)
- [[Cygwin]] のような [[Un|x]] 風システムを使用している場合
-- [SAMP(file)[/cygdrive/c/windows/]] のような経路に対応するもの
[58] '''[[Un|x]] 系の [CODE(URI)[file:]] URI の色々''':
- 絶対経路によるファイル
-- [SAMP(URI)[file:///path/to/file]]
-- [SAMP(URI)[file://localhost/path/to/file]]
-- [SAMP(URI)[file://path/to/file]]
-- [SAMP(URI)[file:/path/to/file]]
-- [SAMP(URI)[file:path/to/file]] (絶対経路? 相対経路?)
- [[symbolic link]] を辿るか否か
- [[home directory]] を表す表現
-- [SAMP(URI)[file:~user/path/to/file]]
-- [SAMP(URI)[file:///~user/path/to/file]] ほか各種
-- [CODE(URI)[~]] を [CODE(URI)[%7E]] としたもの各種
[59] '''照会''': 局所ファイルを[[実行]]させる機能がある[[利用者エージェント]]は
[CODE(ABNF)[[[query]]]] の使用を認めていることがあります。
[[#comment]]
** file: 以下のさまざまな表現形式
[8] 特に [[Windoze]] 上の [[UA]] において、 file:
以下のあらわしかたには様々なものがありました。
,[[UA]] ,file: ,== ,== ,file:// ,== ,== ,file:/// ,== ,== ,file://localhost/ ,== ,== ,メモ
, ,C|/ ,C:/ ,"C:\\" ,C|/ ,C:/ ,"C:\\" ,C|/ ,C:/ ,"C:\\" ,C|/ ,C:/ ,"C:\\" ,
,M$IE2.0 ,○ ,○ ,○ , , , ,○ ,○ ,○ , , , ,
,11111 , , , , , , , , , , , , ,
[[#form:',%text(id=>ua);,%check;,%check;,%check;,%check;,%check;,%check;,%check;,%check;,%check;,%check;,%check;,%check;,%text(id=>condition,size=>5); %submit(label=>"追加");':',%text(source=>ua);,%iif(source=>_no1,true=>○);,%iif(source=>_no2,true=>○);,%iif(source=>_no3,true=>○);,%iif(source=>_no4,true=>○);,%iif(source=>_no5,true=>○);,%iif(source=>_no6,true=>○);,%iif(source=>_no7,true=>○);,%iif(source=>_no8,true=>○);,%iif(source=>_no9,true=>○);,%iif(source=>_no10,true=>○);,%iif(source=>_no11,true=>○);,%iif(source=>_no12,true=>○);,%text(source=>condition);':'%require(ua);']]
*** file://C|/*/*
[[#form:'%text(id=>ua,label=>"[[UA]]"); %check(label=>対応している,default,id=>support); %text(id=>condition,label=>詳細,size=>10); %submit(label=>"追加");':'-[%index;] \'\'%text(source=>ua);\'\': \'\'\'%iif(source=>support,true=>対応。,false=>未対応。);\'\'\'%text(source=>condition);':'%require(ua);']]
*** file://C:\*\*
- [54] ''file://C:'': '''対応。'''
- [56] ''11'': '''対応。'''
[[#form:'%text(id=>ua,label=>"[[UA]]"); %check(label=>対応している,default,id=>support); %text(id=>condition,label=>詳細,size=>10); %submit(label=>"追加");':'-[%index;] \'\'%text(source=>ua);\'\': \'\'\'%iif(source=>support,true=>対応。,false=>未対応。);\'\'\'%text(source=>condition);':'%require(ua);']]
*** file:///*
[[#form:'%text(id=>ua,label=>"[[UA]]"); %check(label=>対応している,default,id=>support); %text(id=>condition,label=>詳細,size=>10); %submit(label=>"追加");':'-[%index;] \'\'%text(source=>ua);\'\': \'\'\'%iif(source=>support,true=>対応。,false=>未対応。);\'\'\'%text(source=>condition);':'%require(ua);']]
*** file:///C|/*/*
- [4] ''Infomosaic/2.0.0 Final Beta J4 (Windows x86)'': 対応。
- [6] '' MosaicView/2.0009 Win32 NEC/9'': 対応。
[[#form:'%text(id=>ua,label=>"[[UA]]"); %check(label=>対応している,default,id=>support); %text(id=>condition,label=>詳細,size=>10); %submit(label=>"追加");':'-[%index;] \'\'%text(source=>ua);\'\': \'\'\'%iif(source=>support,true=>対応。,false=>未対応。);\'\'\'%text(source=>condition);':'%require(ua);']]
*** file:///C:\*\*
- [10] ''MSIE 2.0'': 対応。アドレスバーはすぐに >>9 に書き換えられる。
[[#form:'%text(id=>ua,label=>"[[UA]]"); %check(label=>対応している,default,id=>support); %text(id=>condition,label=>詳細,size=>10); %submit(label=>"追加");':'-[%index;] \'\'%text(source=>ua);\'\': \'\'\'%iif(source=>support,true=>対応。,false=>未対応。);\'\'\'%text(source=>condition);':'%require(ua);']]
*** file://localhost/*
- [1] しばしば使われる。
- [5] [[JustView]]
[[#form:'%text(id=>ua,label=>"[[UA]]"); %check(label=>対応している,default,id=>support); %text(id=>condition,label=>詳細,size=>10); %submit(label=>"追加");':'-[%index;] \'\'%text(source=>ua);\'\': \'\'\'%iif(source=>support,true=>対応。,false=>未対応。);\'\'\'%text(source=>condition);':'%require(ua);']]
*** file://network-host-name/*
- [2] [[WinIE]] では、 [CODE[\\network-host-name\*]]
の参照として使用出来る。
- [3] [[Mozilla]] on [[Win32]] では不可。
[[#form:'%text(id=>ua,label=>"[[UA]]"); %check(label=>対応している,default,id=>support); %text(id=>condition,label=>詳細,size=>10); %submit(label=>"追加");':'-[%index;] \'\'%text(source=>ua);\'\': \'\'\'%iif(source=>support,true=>対応。,false=>未対応。);\'\'\'%text(source=>condition);':'%require(ua);']]
*** file:C:\*\*
- [9] ''Mozilla/1.22 (compatible; MSIE 2.0; Windows 95)'': 対応。この形式を実装したのは、おそらく M$IE が最初でしょう。
[[#form:'%text(id=>ua,label=>"[[UA]]"); %check(label=>対応している,default,id=>support); %text(id=>condition,label=>詳細,size=>10); %submit(label=>"追加");':'-[%index;] \'\'%text(source=>ua);\'\': \'\'\'%iif(source=>support,true=>対応。,false=>未対応。);\'\'\'%text(source=>condition);':'%require(ua);']]
*** Windoze の特殊フォルダの表現
[41] [[Windoze]] ([[WinIE]]) では、特殊フォルダをあらわす次のような形式
([SAMP(URI)[file:///::{[VAR[clsid]]}]]) が使えます。
この機能は遅くても [[Win2k]] で実装されています。
例:
:[[My Document]]:[SAMP(URI)[file:///::%7B450d8fba-ad25-11d0-98a8-0800361b1103%7D]]
:[[My Computer]]:[SAMP(URI)[file:///::%7B20D04FE0-3AEA-1069-A2D8-08002B30309D%7D]]
:[[Network Neighborhoods]]:[SAMP(URI)[file:///::%7B208D2C60-3AEA-1069-A2D7-08002B30309D%7D]]
フォルダによっては [[CLSID]] 表現ではなく、 [[shell:]] scheme
が使用されます。
- [52] [[desktop.ini]] では [CODE(URI)[file://Folder Settings\folder.htt]] とか [CODE(URI)[file://folder.htt]] とか書けるらしいです。。。
[[#comment]]
** 実装
*** Mosaic Netscape 0.9 Beta (Win16 版 on Win95)
[13] 実験してみますた。 [CODE[file:///]] でドライブ一覧 ([CODE[A|/]] とかが並んでる。)
が出てきます。 Location: 欄に [CODE[file:///C|/]], [CODE[file:///C:/]],
[CODE[file:///C%7C/]] と入力すると望んだものが出てきますが、 [CODE[file:///C:\]]
とすると busy で死んでしまいました。 [CODE[file://]] はだめでした。
- [45] >>13 NN 2.01 でもやっぱり固まります。
[[#comment]]
*** memo
[14] [[Lynx]] では [[HOME]] を表す [[~]] が使えます。
[CITE[URL Schemes Supported in Lynx]]
<http://lynx.isc.org/release/lynx2-8-3/lynx_help/lynx_url_support.html#file>
- [44] NN2 ですが、 [CODE(URI)[file:///c:/]] と [CODE(URI)[file:///C|/]] は、得られる効果は同じですが、違うものとして扱われているようです。 (redirect みたいな関係にはないようです。) [SAMP[テ゛ィレクトリ /C%3A]] とか [SAMP[/%7C]] とか「ちゃんと」表示されます。
- [48] 相対 URI [SAMP(URI)[../D|/foo/]] (基底 [SAMP(URI)[file:///C|/]]) のような表現が使える実装もあるそうです。いやいや、これは URI 一般構文から見ればぜんぜん不思議でなく、むしろこうかけなければなりませんが。
[53]
Un|x 版 Mozilla 1.2.1 ですが、[CODE(ABNF)[authority]] は常に無視して [CODE(URI)[localhost]] であるかのように扱ってくれます。何か変ですし、
[CODE(URI)[/]] が3本のつもりで2本にしてしまっても間違いに気づかずに変な結果が出て萎えます。
他の版でも同様な結果だったような気がしますがたしかめていません。とりあえず手元の版ではこうなりました。
([[名無しさん]] [WEAK[2004-05-10 05:13:16 +00:00]])
[42] ほとんど (すべて?) の実装では、[[ディレクトリ]]・
[[フォルダ]]の最後に [CODE(URI)[[[/]]]] があってもなくても同義と解釈します。
[43] [[ハードリンク]], [[シンボリックリンク]]は多分そのシステムでの普通の扱い同様追いかけてくれます
(ハードリンクは本物と区別できないかもしれませんがね)。
[[ショートカット]], [[エイリアス]],
[[シャドウ]]などについても同様の実装があるかもしれません。
[WEAK[(ないかもしれません。)]]
[46] [[Perl]] の実装である [CODE(perl)[[[URI::file]]]] は、
[CODE(ABNF)[[[authority]]]] で[[装置]]名その他
[WEAK[([[DOS]] の[[ドライブ]]名とか。)]] を書くのは良い考えじゃないか?
と述べています。このモジュールは意図的に [SAMP(URI)[file:/usr/bin/perl]]
みたいな書き方を使ってるみたいです。
- [49] [[w3m]] では、使える場面は限られますが、変数 [VAR(URI)[$LIB]] が使えます。例: [SAMP(URI)[file:///$lib/foo/bar]]
- [50] また、 w3m にはやはり限られますが、 [CODE(URI)[cgi-bin]] という仮想ディレクトリを設定で作れます。 [SAMP(URI)[file:///cgi-bin/foo.cgi]] を [SAMP(file)[/path/to/foo.cgi]] に対応させられます。
[51] そして注目すべきは、 w3m の [[local CGI]] 機能の都合上、
[CODE(URI)[file:]] URI でも[[照会]]が使われるのです。
[55]
絶対 URI だけではなくて、相対 URI もいろいろ。 [[RFC 1808]]/[[RFC 2396]] 的にはあってはならないことですが。
たとえば Windows では [CODE(URI)[/]] drive の根になるのか、その一つ上の階層(謎)になるのか、とか、 [CODE(URI)[\]] も path の区切りになるのか、とか。 [CODE(URI)[c:/]] みたいなのを [CODE(URI)[file:///c:/]] の意味にとるのもありそう。
[67]
[CITE[freedesktop.org - Standards/file-uri-spec]]
<http://freedesktop.org/wiki/Standards_2ffile_2duri_2dspec>
[[UNIX]]環境における[CODE(URI)@en[[[file]]:]] [[URI]]と[[ファイル名]]の写像の仕様を作ろうとしているようですが、今のところ何もありません。
([[名無しさん]] [sage] [WEAK[2006-01-03 05:37:05 +00:00]])
[68]
[CITE[Commons VFS - Supported File Systems]]
<http://jakarta.apache.org/commons/vfs/filesystems.html#Local%20Files>
[[UNIX]]と[[Windows]]の[[ファイル名]] ([[UNC]]を含みます。)
は、[CODE(URI)@en[[[file]]://]]を最初につけるだけで[[URI]]にしています。
([[百分率符号化]]はします。) [[Windows]]の場合、
[CODE(char)[\]]と[CODE(URI)@en[/]]はどちらでもよいようです。
([[名無しさん]])
[69]
[CITE[Checking document()]] <http://www.dpawson.co.uk/xsl/sect4/uriIncl.html>
[[XSLT]]の[CODE(XPathf)@en[[[document]]()]][[関数]]の実装状況
([[名無しさん]])
[71]
[CITE[The xdg April 2004 Archive by thread]]
<http://lists.freedesktop.org/archives/xdg/2004-April/thread.html#3678>
>>67 についての議論です。
- 基本的には[[RFC 1738]]の構文を採用します。
- 既存の実装との互換性のため、
[CODE(URI)@en[[[file]]:/[VAR@en[path]]]] 形式も理解できるようにします。
- [CODE(ABNF)@en[[[authority]]]]を明示する時は
([CODE(URI)@en[[[localhost]]]]か)
[CODE(C)@en[[[gethostbyname]]]]で得られた値を使います。
- [[UNIX]]の[[ファイル名]]は[[バイト列]]なので、[[UTF-8]]などではなく、実際の[[ファイル名]]の[[バイト列]]を使います。
という感じのようです。
([[名無しさん]])
[72]
[[KDE]]は動的に生成された内容に対して[CODE(URI example)@en[file:/cgi-bin/helpindex]]のような[[URI]]を使っています。
([[名無しさん]] [sage])
[73]
[CITE[URL Schemes Supported in Lynx]] <http://www.infobiogen.fr/doc/info/lynx_help_files/lynx_help/lynx_url_support.html#file>
([[名無しさん]] [sage])
[76]
[CITE[IEBlog : File URIs in Windows]] <http://blogs.msdn.com/ie/archive/2006/12/06/file-uris-in-windows.aspx>
([[名無しさん]] [WEAK[2006-12-06 23:31:28 +00:00]])
[[#comment]]
** 相互運用性
[58] ここまで見てきたように、 [CODE(URI)[file:]] URI scheme
は標準不在の状況です。どうせ局所的にしか使わないのだからどうでもいいだろうという言い訳のもとに最早収拾がつかない状況に陥っています。
相互運用性なるものは期待するだけ無駄でしょう。
[[#comment]]
** 安全性
[16] [CITE[8-1. Windowsパス名の落とし穴]]
<http://www.ipa.go.jp/security/awareness/vendor/programming/b08_01.html>
[[Windows]] の[[ファイル名]]の色々な表現について。この記事は直接
[CODE(URI)[file:]] の問題を扱ったものではありませんが、
余り気にせずに実装すると [CODE(URI)[file:]] URI
でも同じ問題を抱えることになります。
[17] >>16 の問題が広く取り上げられた例として、
[CODE[[[CON]]]] [CODE[CON]] 問題がありました。
- [18] ''スラッシュドット ジャパン | c:\auxでIEがクラッシュする脆弱性'' <http://slashdot.jp/article.pl?sid=03/07/08/1511208&mode=flat&commentsort=4&threshold=-1>
- [19] [[Un|x]] でも、 [[Mozilla]] で [CODE(URI)[file:///dev/zero]] を見ようとすると困ったことになるとか、同様の問題があったりもします。
- [20] 流石に [[WinIE6.0]] でも Mozilla 1.4 でも、 [SAMP(URI)[file:///?/c:/windows/]] とか [SAMP(file)[\\?\c:\windows]] とかは機能しないみたい。
[60] '''外部文書からの参照''': 信頼できるか不明な相手から送られてきた文書中に
[CODE(URI)[file:]] URI が記述されていた場合、それをどう処理するかは注意が必要です。
例えば、埋込み[[画像]]として[[利用者]]の手元のファイルが指定されていると、
利用者は外部から送られてきた文書に自分の手元の画像が含まれていると思って混乱するかもしれません。
[[Webブラウザ]]で[[ディレクトリ]]を指定すると手元のファイルの一覧表示が行われるように実装されていることを期待して、
利用者の環境が外部から丸見えであるかのように錯覚させて安全対策と称した怪しいソフトウェアを売り込む怪しい
Web サイトも実在します。
心理的な[Q[攻撃]]だけではなく、実際に攻撃することも可能です。
例えば埋込み画像として [[PC/AT互換機]]+ [[DOS]]・[[Windows]]
では[[フロッピー・ディスク]]のドライブを表す
[SAMP(URI)[file:///a:/fake.jpg]] のような指定を行うと、
[WEAK[(ファイルが実在するかに関わらず)]]
フロッピー・ディスクに探しに行くと思われるので、
突然カタカタと音が鳴り出して利用者は不安・不快に思うかもしれません。
数が多ければ[[ブラクラ]]や [[DoS]] ともなり兼ねません。
[61] '''URI を指定できる公開サービス''':
[[URI]] を指定して、その URI によって[[取出し]]できる[[資源]]に対して操作するような公開のサービスでは、
意図せずに [CODE(URI)[file:]] URI によって[[鯖]]内部のファイルを閲覧・
利用されてしまうことがないように注意が必要です。
特に URI から取出しを行うために[[ライブラリ]]を使っている場合、
[CODE(URI)[http:]] URI だけを使うことを想定していても
[CODE(URI)[file:]] URI の場合の処理も実装されていることがよくあります。
[63] '''外部への情報提供''':
[[転送プロトコル]]や[[スクリプト]]などを介して[[履歴]]情報などを提供する場合、
個人情報保護 (と場合によってはシステムの安全)
の観点から[Q[外部]]と考えられるところには情報を送らない (取出せない)
ように配慮が必要です。
例えば、 [[HTTP]] にはリンク元の [[URI]]
を記述する [CODE(HTTP)[[[Referer]]:]] という[[頭欄]]がありますが、
[CODE(URI)[file:]] URI の文書から [CODE(URI)[[[http]]:]]
URI の文書へのリンクを辿ったような場合には [CODE(URI)[file:]]
URI を [CODE(HTTP)[Referer]] として送るべきではありません。
古い[[利用者エージェント]]はこの配慮を怠っていたものがありましたが、
最近の [[Webブラウザ]]は注意しているようです。
文書内のリンク以外では[[栞]]や[[履歴]]や同時に表示している別の文書へのスクリプトからのアクセスなどで注意が必要です。
[64] '''[CODE(URI)[file:]] は安全とは限らない''':
普通 [CODE(URI)[file:]] URI
は局所ファイルを表しますから比較的安全だと考えがちですが、
必ずしもそうとは言えません。 [CODE(ABNF)[[[authority]]]]
は実は何でも書けますから近くのネットワーク上のホストかもしれませんし、
知らない遠くの[[ファイル鯖]]かもしれません。
たとえ [CODE(URI)[localhost]] でも、局所ファイル・システム木に mount
されたネットワーク上のファイル庫である可能性はざらにあります。
[[#comment]]
** 例
- [11] [CODE[file:/path/to/something]]
- [12] ''Another HTML-lint : Explanation'' <http://openlab.ring.gr.jp/k16/htmllint/explain.html#illegal-format-url> ちょっとだけ参考になる例があります。
- [15] [SAMP(URI)[file://\\host\sharename\dir\file]] (WinIE)
- [47] [SAMP(URI)[file://./backofficestorage/<domain>/MBX/<username>/Calendar]]
[SRC[[[Microsoft]]]]
[87]
[PRE(URI example code)[
file:///Macintosh HD/書類/test.html
]PRE]
旧 [[Mac OS]]のファイル。
[88]
[PRE(URI example code)[
file:/Macintosh HD/Applications/
]PRE]
[97]
[PRE(URI example code)[
file://vms.host.edu/disk$user/my/notes/note12345.txt
]PRE]
[[VMS]] における [CODE(file)[DISK$USER:[MY.NOTES]NOTE123456.TXT]] を表します [SRC[>>96]]。
[115] [CODE(URI)@en[[[localhost]]]] と[[空文字列]]は等価です [SRC[>>106]]。
[PRE(URI example code)[
file://localhost/path/to/file.txt
file:///path/to/file.txt
]PRE]
[116]
[PRE(URI example code)[
file://usr/local/bin/
]PRE]
[[ディレクトリー]]を表すため [CODE(URI)[[[/]]]] で終わっています [SRC[>>106]]。
[117] [SRC[>>106]]
[PRE(URI example code)[
file:///c:/windows/example.ini
]PRE]
[118]
[PRE(URI example code)[
file:////department/example.doc
]PRE]
[[共有ディレクトリー]] [CODE(file)[department]] の [CODE(file)[example.doc]] を表します [SRC[>>106]]。
;; [119] [[ホスト名]]じゃなくて[[共有ディレクトリー]]なのですか。しかも [CODE(URI)[[[//]]]]
や [CODE(URI)[[[/////]]]] じゃなくて [CODE(URI)[[[////]]]] なのですか。。。
[120] [[Windows]] の[[ドライブ]]の表現方法は色々あります [SRC[>>106]]。
[PRE(URI example code)[
file:///c|/tmp/test.txt
file:///c:/tmp/test.txt
file:///c/tmp/test.txt
]PRE]
[121] [SRC[>>106]]
[PRE(URI example code)[
file:/this/is/the/path
]PRE]
[62] [[Web]] で公開されている
[[著述工具]]によって作成されたとおぼしき [[HTML文書]]で、
[[画像]]の参照先や[[リンク]]先が [CODE(URI)[file:]] URI
で[[閲覧者]]には何も見れないことがしばしばあります
[WEAK[(製作者の手元では正しく表示されるので気づかないのでしょう)]]。
著述工具は普通作成した文書を何らかの形で公開することを想定しているはずですから、
URI が [CODE(URI)[file:]] であるなら保存時に警告するなど配慮するべきです。
また、著述工具や Web ブラウザは著者のために [CODE(URI)[file:]]
URI が機能しないモードを [WEAK[(マークの誤り回復を行わないなどの機能と共に)]]
用意すると便利かもしれません。
[65]
[[Firefox]] は各システム環境の標準の[[文字コード]]で[[百分率符号化]]するみたいです。
([[名無しさん]] [sage] [WEAK[2005-12-25 13:39:58 +00:00]])
[66]
[[Firefox]] on [[Win32]] で[[LAN]]上の別計算機の[[ファイル]]を開くと、[CODE(URI example)@en[file://///host/path/to/file]]のような、[CODE(URI)@en[[[file]]:///]]の後に[[UNC]]の[CODE(file)[\]]を[CODE(file)@en[/]]にしたようなものが[[URI]]となるようです。
([[名無しさん]] [sage])
[70]
[CITE@en[draft-hoffman-file-uri]]
<https://datatracker.ietf.org/public/pidtracker.cgi?command=view_id&dTag=12228&rfc_flag=0>
([[名無しさん]] [sage])
[74]
[CITE[The 'file' URI Scheme Update Project.]] <http://offset.skew.org/wiki/URI/File_scheme>
([[名無しさん]])
[77]
[CITE@ja-jp[Windows Mobile ヒント集 - インターネットの参照]] ([CODE[2007-03-15 19:30:09 +09:00]] 版) <http://www.microsoft.com/japan/windowsmobile/wm50/techinfo/tips/browseinternet.mspx>
([[名無しさん]])
[78]
>>77 [CODE(URI example)@en[file://\windows\default-home.htm]]
([[名無しさん]])
[[#comment]]
* memo
[79]
[CITE@en-US[Elements of an EmotionML 1.0]] ([TIME[2008-11-19 23:37:02 +09:00]] 版) <http://www.w3.org/2005/Incubator/emotion/XGR-emotionml-20081120/#s6.1>
[PRE(XML example code)[
<link role="expressedBy" uri="file:johnsParty.avi" start="10s" end="15s"/>
]PRE]
[80] [CITE@ja[ASR's Room NicoCache Proxy Auto Config]] ([TIME[2008-03-06 00:57:58 +09:00]] 版) <http://homepage1.nifty.com/asr/tools/nicocache-pac.html>
>IEの場合、「file://C:/path/to/xxx.pac」だとOKなのですが「file:///C:/path/to/xxx.pac」のように「///」で指定すると無視されるようなので気をつけてください。(ホームページの設定は「///」なのに…)
* フォーム提出
[81] [CITE@en-GB-x-Hixie[Web Forms 2.0]] ([TIME[2009-01-05 20:07:15 +09:00]] 版) <http://www.whatwg.org/specs/web-forms/current-work/#for-file>
[82] [CITE[localhost]]
([TIME[2008-01-09 21:43:56 +09:00]] 版)
<http://www3.ocn.ne.jp/~miotti/ds/localhost.html>
[83] [CITE[XProc: An XML Pipeline Language]]
([TIME[2010-05-11 22:38:07 +09:00]] 版)
<http://www.w3.org/TR/2010/REC-xproc-20100511/#binary>
[84] [CITE[IRC logs: freenode / #whatwg / 20101114]]
( ([TIME[2010-11-20 10:52:27 +09:00]] 版))
<http://krijnhoetmer.nl/irc-logs/whatwg/20101114>
[85] [CITE[Standard for exchanging file: URIs]] ([TIME[2007-05-25 22:58:50 +09:00]] 版) <http://equinox-project.org/spec/file-uri-spec.txt>
[86] [CITE[freedesktop.org - Specifications/file-uri-spec]]
( ([TIME[2011-02-20 20:33:47 +09:00]] 版))
<http://freedesktop.org/wiki/Specifications/file-uri-spec>
[89] [CITE[IEのローカルファイルをXHRでどこまで読みとらせるか - 葉っぱ日記]]
([TIME[2011-04-26 15:50:00 +09:00]] 版)
<http://d.hatena.ne.jp/hasegawayosuke/20110426/p1>
[122] [CITE@en[File URI scheme - Wikipedia, the free encyclopedia]]
( ([TIME[2011-06-12 01:31:33 +09:00]] 版))
<http://en.wikipedia.org/wiki/File_URI_scheme>
[124] [CITE[Bug 66194 – file:// Correct URLs w/ UNC have *5* slashes]]
( ([TIME[2011-06-27 00:26:14 +09:00]] 版))
<https://bugzilla.mozilla.org/show_bug.cgi?id=66194>
[130] [[authority]] に[[ドライブ]]の類を指定するのが良いとする人もいます。
;; [CITE[URI::file - search.cpan.org]] ([TIME[2011-07-02 12:38:09 +09:00]] 版) <http://search.cpan.org/~gaas/URI-1.58/URI/file.pm#MAPPING_NOTES>
[131] [[ファイル・システム]]によっては名前に [CODE(char)[[[/]]]] や [CODE(char)[[[.]]]]
や [CODE(char)[[[..]]]] を認めていることがあり、[[パーセント符号化]]によりこれを表すことがあります。
[134] <http://code.google.com/p/chromium/issues/detail?id=47416>
[135] [CITE[''''''[''''''whatwg'''''']'''''' URL: file: URLs]]
( ([TIME[2012-10-29 05:29:48 +09:00]] 版))
<http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2012-October/037719.html>
[136] [CITE[IRC logs: freenode / #whatwg / 20121026]]
( ([TIME[2012-11-21 23:23:13 +09:00]] 版))
<http://krijnhoetmer.nl/irc-logs/whatwg/20121026#l-669>
[137] [CITE[WWW-Talk Jan-Mar 1993: HTML todo list]]
( ([TIME[2013-03-05 12:40:15 +09:00]] 版))
<http://1997.webhistory.org/www.lists/www-talk.1993q1/0043.html>
[138] [CITE[WebKit組み込んでるアプリにおいて純粋にWebKit由来のバグであれば勝手に直ったりするけどWebKitをどういう設定で使っているかに起因する仕様上の欠陥は勝手に直らない - 金利0無利息キャッシング – キャッシングできます - subtech]]
( ([TIME[2013-06-12 01:31:50 +09:00]] 版))
<http://subtech.g.hatena.ne.jp/mala/20121025/1351159332>
[139] [CITE[Safariのfile://におけるSame origin policyについてのアップデート - 金利0無利息キャッシング – キャッシングできます - subtech]]
( ([TIME[2013-06-12 01:33:41 +09:00]] 版))
<http://subtech.g.hatena.ne.jp/mala/20121023/1351004574>
[140] [CITE[classic mozilla/cmd/winfe/fegui.cpp]]
( ([TIME[1998-11-09 21:50:39 +09:00]] 版))
<https://mxr.mozilla.org/classic/source/cmd/winfe/fegui.cpp#2531>
[141] [CITE[Issue 257354 - chromium - file URL parsing quirks - An open-source project to help move the web forward. - Google Project Hosting]]
( ([TIME[2013-11-22 08:58:07 +09:00]] 版))
<http://code.google.com/p/chromium/issues/detail?id=257354>
[142] [CITE@en[reviving the file URI scheme]]
( ([[Matthew Kerwin]] 著, [TIME[2013-12-12 16:46:38 +09:00]] 版))
<http://lists.w3.org/Archives/Public/uri/2013Dec/0000.html>
[143] [CITE@en[URI/File scheme - Offset]]
( ([TIME[2013-12-13 18:58:37 +09:00]] 版))
<https://offset.skew.org/wiki/URI/File_scheme>
[144] [CITE[Orbeon Forms — Forms Everywhere: More secure file uploads]]
( ([TIME[2014-01-17 00:57:36 +09:00]] 版))
<http://blog.orbeon.com/2012/06/more-secure-file-uploads.html>
[145] [CITE@ja[新・OS X ハッキング! (84) 話題の「File:///」とURLスキーム | マイナビニュース]]
( ([[Mynavi Corporation]] 著, [TIME[2014-02-13 06:07:06 +09:00]] 版))
<http://news.mynavi.jp/column/osxhack/084/>
[146] [CITE[ncsa-mosaic/CHANGES at master · alandipert/ncsa-mosaic]]
( ([TIME[2014-04-07 05:37:51 +09:00]] 版))
<https://github.com/alandipert/ncsa-mosaic/blob/master/CHANGES#L860>
[147] [CITE@en[draft-kerwin-file-scheme-13 - The file URI Scheme]]
( ([TIME[2014-09-26 08:18:47 +09:00]] 版))
<http://tools.ietf.org/html/draft-kerwin-file-scheme-13>
[148] [CITE@en[Re: URL Spec WorkMode (was: PSA: Sam Ruby is co-Editor of URL spec)]]
( ([[Jonas Sicking]] 著, [TIME[2014-12-02 12:03:24 +09:00]] 版))
<http://lists.w3.org/Archives/Public/public-webapps/2014OctDec/0522.html>
[21] [CITE[WWW-Talk Jan-Mar 1994: file://localhost => local: ?]]
([TIME[2015-01-25 12:44:24 +09:00]] 版)
<http://1997.webhistory.org/www.lists/www-talk.1994q1/0983.html>
[22] [CITE@en-US[Same-origin policy for file: URIs | MDN]]
( ([TIME[2014-03-26 06:47:26 +09:00]] 版))
<https://developer.mozilla.org/en-US/docs/Same-origin_policy_for_file:_URIs>
[23] [CITE@en[Enable paths starting with / to resolve within a volume on Windows · jsdom/whatwg-url@c13670d]]
([TIME[2015-05-02 11:37:00 +09:00]] 版)
<https://github.com/jsdom/whatwg-url/commit/c13670dffdef1f31cb53d9c342076a27a5742760>
[24] [CITE[IRC logs: freenode / #whatwg / 20150430]]
([TIME[2015-05-02 11:37:49 +09:00]] 版)
<http://krijnhoetmer.nl/irc-logs/whatwg/20150430#l-348>
[FIG(quote)[
[FIGCAPTION[
[25] [CITE[How does phoneGap (Cordova) work internally, iOS specific - Stack Overflow]]
([TIME[2015-05-29 14:24:03 +09:00]] 版)
<http://stackoverflow.com/questions/12857462/how-does-phonegap-cordova-work-internally-ios-specific>
]FIGCAPTION]
> file:///!gap_exec
]FIG]
[FIG(quote)[
[FIGCAPTION[
[26] [CITE[GridFTP: User's Guide ]]
([TIME[2015-06-06 19:00:30 +09:00]] 版)
<http://toolkit.globus.org/toolkit/docs/3.2/gridftp/user/globusurlcopy.html>
]FIGCAPTION]
> file:///foo.dat
> Host not specified so it uses your local host, port not specified as before.
> file:/foo.dat
> This is also valid, but is not recommended because...???
]FIG]
[FIG(quote)[
[FIGCAPTION[
[27] [CITE[DUPLICITY(1) manual page]]
([TIME[2015-05-07 01:40:02 +09:00]] 版)
<http://duplicity.nongnu.org/duplicity.1.html#sect7>
]FIGCAPTION]
> Local file path
> file://'''['''relative|/absolute''']'''/local/path
]FIG]
[FIG(quote)[
[FIGCAPTION[
[28] [CITE[Man page of URI]]
([TIME[2015-02-06 06:34:09 +09:00]] 版)
<http://linuxjm.osdn.jp/html/LDP_man-pages/man7/uri.7.html>
]FIGCAPTION]
> 二つめの書式 (例えば <file:/etc/passwd>) もローカルファイルを参照する 正しいフォーマットである。しかし古い標準ではこの書式を許していなかったので、 これを URI として認識しないプログラムも存在する。
]FIG]
[FIG(quote)[
[FIGCAPTION[
[29] [CITE[Man page of URI]]
([TIME[2015-02-06 06:34:09 +09:00]] 版)
<http://linuxjm.osdn.jp/html/LDP_man-pages/man7/uri.7.html>
]FIGCAPTION]
> KDE は生成ファイル (generated file) を URL <file:/cgi-bin> の形式でサポートしている。
]FIG]
[FIG(quote)[
[FIGCAPTION[
[30] [CITE[Be Careful with file URLs]]
([TIME[2015-06-22 14:57:54 +09:00]] 版)
<https://www.openoffice.org/ucb/docs/fileurl.html>
]FIGCAPTION]
> Normally, osl URLs and FCP URLs are the same (after all, the FCP uses osl to access the files). But the FCP has a feature called mount points that allows it to restrict access to only certain files (those that lie below a given set of mount points in the file system hierarchy), and to give names to these files that hide their real locations.
> For example, if you have a mount point named user at the osl URL file:///home/usr123, the osl URL file:///home/usr123/work/abc.txt corresponds to the FCP URL file:///user/work/abc.txt. If you only have that single mount point, the osl URL file:///home/usr567/work/def.txt has no corresponding FCP URL (and cannot be accessed via the FCP).
]FIG]
[31] [CITE[The File Content Provider]]
([[Kai Sommerfeld]] 著, [TIME[2015-06-22 15:00:29 +09:00]] 版)
<https://www.openoffice.org/ucb/docs/ucp-ref/file-ucp.html>
[FIG(quote)[
[FIGCAPTION[
[32] [CITE[URI Expressions]]
([[Mark S. Miller]] 著, [TIME[2009-05-13 10:28:23 +09:00]] 版)
<http://www.erights.org/elang/io/uri-exprs.html>
]FIGCAPTION]
> to accomodate the way modern browsers operate on windows, a one-letter protocol handler is assumed to be a drive letter and turned into a file: uri whose body consists of the original uri. For example,
> <a:/jabberwocky.txt>
> is turned into
> <file:a:/jabberwocky.txt>
> which will fetch the file from your A drive (typically, a floppy).
]FIG]
[33] [CITE@en[File URIs in Windows - IEBlog - Site Home - MSDN Blogs]]
([TIME[2015-07-14 17:06:46 +09:00]] 版)
<http://blogs.msdn.com/b/ie/archive/2006/12/06/file-uris-in-windows.aspx>
[FIG(quote)[
[FIGCAPTION[
[34] [CITE@ja[JVNVU#99430390: Windows NTLM が file:// URL へのリダイレクト時に SMB 接続を行いユーザ認証情報を送信する問題]]
([TIME[2015-04-14 15:00:12 +09:00]] 版)
<https://jvn.jp/vu/JVNVU99430390/>
]FIGCAPTION]
> リダイレクト先が file:// ではじまる URL であり、かつ被害者の PC が Windows である場合、Windows は自動的に攻撃者の SMB サーバに接続しようとしてユーザの認証情報を送信します。送信された認証情報は、SMB サーバのログに記録されます。認証情報は暗号化されているものの、総当たり攻撃 (brute force attack) によって解読される可能性があります。
]FIG]
[35] [CITE@en[Attempt to address various file URL issues. · whatwg/url@09cd673]]
([TIME[2015-08-14 18:57:56 +09:00]] 版)
<https://github.com/whatwg/url/commit/09cd673a338e7abc552140d950c4f34d7d71362a>
[36] [CITE@en[27518 – remove any and all normative definition of file:// handling]]
([TIME[2015-08-15 02:18:10 +09:00]] 版)
<https://www.w3.org/Bugs/Public/show_bug.cgi?id=27518>
[37] [CITE@en[Make file:/// and file://LOCALHOST/ parse identically. Fixes https://… · whatwg/url@bb36bd9]]
([TIME[2015-08-15 02:19:42 +09:00]] 版)
<https://github.com/whatwg/url/commit/bb36bd9f035be2e3904ddc8e4e8fd1e756ae8f1e>
[38] [CITE@en[27517 – file: consider not supporting vertical bar Windows drive letter quirk for relative URLs]]
([TIME[2015-08-15 02:21:28 +09:00]] 版)
<https://www.w3.org/Bugs/Public/show_bug.cgi?id=27517>
[39] [CITE@en[Define syntax for file URLs. Third part towards fixing #33. · whatwg/url@0755b48]]
([TIME[2015-08-18 12:17:23 +09:00]] 版)
<https://github.com/whatwg/url/commit/0755b4855187c94e1dfca900ba5122fa02a359ec>