54

URL について質問があります。

RFC 3986を読みましたが、まだ 1 つの URL について質問があります。

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

それ//server.com:80/path/infoは有効です (スキーマの相対 URL です)。

それが有効であることも知ってhttp://server.com:80/path//infoいます。

しかし、次のものが有効かどうかはわかりません。

http://server.com:80//path/info

私の質問の背後にある問題は、に制限http://server.com:80//path/infoされた URI によって作成された場合、Cookie が に送信されないことです。http://server.com:80/path/info/path

4

1 に答える 1

62

複数のスラッシュを含む URL を参照してください。何か問題がありますか? 、URL で二重スラッシュを使用することの欠点はありますか? , URL の二重スラッシュは何を意味しますか? およびRFC 3986 - Uniform Resource Identifier (URI): Generic Syntax

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

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

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

表現:

URI に機関コンポーネントが含まれていない場合、パスを 2 つのスラッシュ文字 (「//」) で始めることはできません。

protocol-relative URLs を許可しますが、その場合、権限server.com:80が存在しない可能性があることを具体的に述べています(あなたの例では)。

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

于 2013-12-11T16:04:43.693 に答える