106

今日、次の URL に出会いました。

http://www.sfgate.com/cgi-bin/blogs/inmarin/detail??blogid=122&entry_id=64497

クエリ文字列の先頭に二重の疑問符があることに注意してください。

??blogid=122&entry_id=64497

私のブラウザには問題がないようで、簡単なブックマークレットを実行しています。

javascript:alert(document.location.search);

上記のクエリ文字列が表示されました。

これは有効な URL ですか? 私が非常に衒学的である理由は(私がそうであると仮定して)、クエリパラメーターのためにこのようなURLを解析する必要があり、二重の疑問符をサポートするには私のコードにいくつかの変更が必要になるからです. 明らかに、彼らが野生にいる場合、私は彼らをサポートする必要があります。URL の標準に正確に従わなかったのは私のせいなのか、それとも実際には非標準の URL なのか、私は主に興味があります。

4

2 に答える 2

123

はい、有効です。URL の最初 の部分だけ?が意味を持ち、それ以降は文字通りの疑問符として扱われます。

クエリ コンポーネントは、最初の疑問符 ("?") 文字で示され、番号記号 ("#") 文字または URI の末尾で終了します。

...

文字スラッシュ ("/") と疑問符 ("?") は、クエリ コンポーネント内のデータを表す場合があります。一部の古い誤った実装では、相対参照 (セクション 5.1) のベース URI として使用される場合、そのようなデータを正しく処理できない可能性があることに注意してください。ただし、クエリ コンポーネントは、「キー = 値」のペアの形式で識別情報を運ぶためによく使用され、頻繁に使用される値の 1 つは別の URI への参照であるため、これらの文字のパーセント エンコーディングを避ける方が使いやすい場合があります。

https://www.rfc-editor.org/rfc/rfc3986#section-3.4

于 2010-05-27T19:22:00.383 に答える
30

接線的に関連する回答としてfoo?spam=1?&eggs=3、パラメーターspamに値を与えます1?

于 2016-02-17T02:18:34.430 に答える