HTTPは2つのスラッシュで始まります。例えばhttp://example.com
。
FTPについても同様です。例えばftp://example.com
。
ただし、ファイル「URL」は3つのスラッシュで始まります。たとえば、クロムを使用してpdfファイルを読み取る場合、URLはになりますfile:///D:/Desktop/Book.pdf
。
ファイルURLで3つのスラッシュが使用されるのはなぜですか?
HTTPは2つのスラッシュで始まります。例えばhttp://example.com
。
FTPについても同様です。例えばftp://example.com
。
ただし、ファイル「URL」は3つのスラッシュで始まります。たとえば、クロムを使用してpdfファイルを読み取る場合、URLはになりますfile:///D:/Desktop/Book.pdf
。
ファイルURLで3つのスラッシュが使用されるのはなぜですか?
回答:
他の人が述べたように、ファイルスキーマは「file:// <host> / <path>」の形式です。ほとんどのブラウザでは2つのスラッシュだけで問題は発生しませんが、当然のことです。
すべてが等しい場合、トリプルスラッシュと「localhost」キーワードは、有効なURI / URL構文への準拠を保証するためにのみ存在します。ファイルスキーマのコンテキストでは、ホストは、明示的な転送プロトコルまたはサーバードキュメントパスなしでファイルシステムから直接読み込まれるため、意味がありません。HTTPではないため、理論的には複数のローカル仮想ホストをセットアップできる標準のWebサーバーからロードすることはできません。また、ブラウザは「file:/// volumes / foo」のようなボリューム名を使用するだけなので、技術的には別の「ホスト」である標準のネットワークボリュームからはロードできません。最後に、「file://example.com/some/file」のようなものを試してもうまくいきません。おそらく外部ホストをサポートする理由はいくつかありますが、私には考えられません。
IETFは現在、トリプルスラッシュの要件を削除するために変更を起草していますが、このドラフトでは、file:c|/path
やなどの奇妙な可能性もいくつか追加されていfile://///host.example.com/path
ます。
https://tools.ietf.org/html/draft-ietf-appsawg-file-scheme-03
「3.この仕様は、非ローカルファイルにアクセスするためのメカニズムを定義も禁止もしていません。」
完全な構文はfile://host/path
です。
ホストがの場合、localhost
省略できますfile:///path
。
RFC 1738 – Uniform Resource Locators(URL)を参照してください。
ファイルURLは次の形式を取ります。
file://<host>/<path>
[…]
特殊なケースとして、
<host>
文字列「localhost」または空の文字列を指定できます。これは「URLの解釈元のマシン」として解釈されます。
localhost
他のプロトコルからも省略できますfile://
か?
デニスは分離するのに必要な第三のスラッシュ、説明しているhost
からとpath
、他の二つははるかに興味深いです...
これらは、URL構文への役に立たない、ややarbitrary意的な追加であることがわかりました。World Wide Webの発明者であり、その標準の多く(DennisがリンクしたRFCを含む)の著者であるTim Berners-Leeは、2009年のインタビューで「ダブルスラッシュ」の使用を嘆きました。
ダブルスラッシュは、当時のプログラミング規約ではありましたが、実際には必要ないことが判明しました、とバーナーズ・リー氏は説明しました。彼は、人々が長年にわたってそれらのスラッシュを紙に書いたりタイプしたりする必要がなかったなら救われたかもしれないと彼は言った-それらの2つのキーストロークをタイプするのに費やされた人間の労働と時間は言うまでもないブラウザーのアドレスボックスでの時間。
http://bits.blogs.nytimes.com/2009/10/12/the-webs-inventor-regrets-one-small-thing/
そのため、約18年前の先見の明のわずかな(かつ特徴のない)失効を除けば、ファイルURLはfile:/D:/Desktop/Book.pdf
でなく、簡単に変更できたはずですfile:///D:/Desktop/Book.pdf
。
あなたの質問に答えるには、URLに3つのスラッシュがある理由はありません。
更新: @ComFreekがコメントで指摘しているように、2017年現在、file:/D:/...
上記の例は有効です!これは、RFC 8089のおかげです。RFC8089は、以前の標準からこの修正を具体的に呼び出しています...
[RFC1738]の定義によれば、ファイルURLは常にトークン "file://"で始まり、その後に(オプションで空白の)ホスト名と "/"が続きます。セクション2の構文により、二重スラッシュ「//」を含む権限コンポーネント全体がオプションになります。
なんて生きている時間。
http:example.com
、http://example.com
それを使用するだけで2バイトを節約できることは、多くのように思えないかもしれませんが、合計されます。Googleは1日に数百万件の検索を受け取ります。ページにはいくつのリンクがありますか?少なくとも20。つまり、100万回の検索に対して、スラッシュが必要なければ、20 MBの帯域幅を節約できたことを意味します。
http://example.com
ようにリンクできます//example.com
。これはプロトコル相対URLと呼ばれ、すべてのブラウザーがサポートしています。
file://localhost/D:/Desktop/
自動的に拡張します。