2013-12-11 6 views
24

私はURLをについて質問があります。パスセクションの//は有効ですか?

私が読んだが、まだ疑問を持っているRFC 3986約1 URL:URIが権限コンポーネント、その後、パスコンポーネントが含まれている場合


はどちらかでなければなりません空であるかスラッシュ(「/」)文字で始まります。 URI に権限コンポーネントが含まれていない場合は、パスを
に2つのスラッシュ文字( "//")で始めることはできません。さらに、URI参照
(セクション4.1)は、相対パス参照でもよく、この場合、最初のパスセグメントにはコロン( ":")文字を含めることはできません。
ABNF
は、これらのケースを明確にするために、特定のURI参照内のパス部分文字列に一致する のいずれか1つだけを区別するために5つの別個のルールが必要です。 パーサーがこれらの規則のいずれかと一致するURIサブ文字列
を記述するために、一般用語「パスコンポーネント」を使用します。

私はまたhttp://server.com:80/path//infoが有効であることを知っている

(それがスキーマの相対URLである)//server.com:80/path/infoが有効であることを、知っています。

しかし、私は、次のいずれかが有効であるかどうかを確認していない:

​​

私の質問の背後にある問題は、クッキーが送信されないされていることを/path

に制限URI http://server.com:80/path/infoによって作成 http://server.com:80//path/info

答えて

21

url with multiple forward slashes, does it break anything?,Are there any downsides to using double-slashes in URLs?,What does the double slash mean in URLs?およびRFC 3986 - Uniform Resource Identifier (URI): Generic Syntaxを参照してください。

コンセンサス:ブラウザは要求をそのまま実行しますが、要求を変更しません。 /文字がパスの区切りであるが、経路セグメントは次のように定義される通りである:

path-abempty = *("/" segment) 
segment  = *pchar 

http://example.com/後スラッシュを直接別のスラッシュ、無限に続くことができることを意味します。サーバーはそれを無視するかもしれませんが、あなたが理解したようにブラウザはそうしません。

フレーズ:URIが権限コンポーネントが含まれていない場合

、パスは2つのスラッシュ文字(「//」)で を開始することはできません。

一切の権限(あなたの例ではserver.com:80)が存在しないかもしれないprotocol-relative URLsを可能にしますが、特に、その場合には述べています。

So:はい、有効です。いいえ、使用しないでください。

+0

ブラウザのバグで、// pathのクッキーが/ pathに送信されないのですか? –

+0

@Christianバグではなく、 '//path 'は'/foo/path'と '/// path'と'/path'と異なります。 '/ path'に名前のない"サブディレクトリ "が存在します。これは有効です。だから、 '/ path'でクッキーを設定した場合、'/path'やそれ以外の方法では読み取ることができません。 :) – CodeCaster

+1

音が合法です。別の答えや意見があれば、私は1日か2日待って、そうでなければ答えを受け入れるだろうと思う。 –

関連する問題