2012-04-01 4 views
9

URI標準の設計者がのようなURIの定義に//を持つことを選択した理由を知りたいと思います。"http://"の "//"

なぜそれほど複雑になるのですか?なぜhttp:を使用しないのですか?

+1

Windowsでは '\\ ComputerName \ Resource'もリソースを識別するため、奇妙な規則ではありません。 – Mehrdad

+0

sshは//または\\を使用しません。 – Vincent

+2

私は '//'気にしません。これは '// example.com/image.png'のようなことを可能にします。 –

答えて

28

ここにはthe answerウェブの発明者の後悔する小さなもの)があります。

後見人Tim Berners-Leeもそれを削除します。

それが含まれた理由:

ダブルスラッシュは、一度にプログラミング大会ものの、実際には必要でないことが判明しました。

+1

非常に良い答えです。ありがとうございました。 – Vincent

+1

あなたはこれを世界でどのように見つけましたか、私は考えていません... – Mehrdad

+3

私はそれを少し前に読むことを覚えています。 –

10

RFC 2396は、FWIWをカバーしています。最高の特定のセクション5.2の一部7で

http://www.ietf.org/rfc/rfc2396.txt

擬似コードは、「//」は何それを次のことも疑似コードので、URI(の権限の一部であることを示すために存在していることを、あなたの質問に答えますそれがURIの必須部分ではないことを明確にします)。また

if authority is defined then 
     append "//" to result 
     append authority to result 

権限が存在しない場合、それはRFC 3986セクションでもう少し3.

を綴らだ、パスが2つの スラッシュ文字(「//」)で始めることはできません。これらの制限により、あるパス(セクション3.3)に対して5つの のABNFルールが得られます。そのうちの1つのみが になります。

+0

ありがとうございました。しかし、この設計選択の理由を説明していないのに対し、 ':'は十分である可能性があります。 +1検索の努力のために:) – Vincent

+3

@ヴィンセント - それをよりよく説明する3986の参照を追加しました。 URI構文は権限部分を全くサポートしていません(したがって、http:foo/bar.htmlのような参照は現在のコンテキスト/ページと同じ権限を持つことになります)。シメオン氏の指摘しているように、これは一般的に使用される「機能」ではないため、TBLは一般的なケースを最適化してそれらを削除するためにはうまくいきましたが、まだバグではなくシンタックスの機能です。:) –

+0

詳細を含んでいるので答えを選んだが、シメオンの答えはそれほど良いものだった。 – Vincent