1. ホーム
  2. url

[解決済み] URLに複数のクエスチョンマークを入れることは有効ですか?

2022-11-07 22:52:34

質問

今日、以下の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 を解析する必要があり、2 重の疑問符をサポートするには私のコードにいくつかの変更が必要になるためです。明らかに、もしそれらが野放しにされているなら、私はそれらをサポートする必要があるでしょう。私は主に、URL 標準に正確に準拠していない私のせいなのか、それとも実際に非標準の URL なのかを知りたいと思っています。

どのように解決するのですか?

はい、有効です。ただし 最初 ? は意味を持ち、それ以降はリテラルなクエスチョンマークとして扱われます。

<ブロッククオート

クエリーコンポーネントは、次のように示されます。 最初のクエスチョンマーク("?") 文字で示され、末尾に数字 記号 ("#") 文字または URI の末尾で終了します。 で終了します。

...

<ブロッククオート

スラッシュ("/")と クエスチョンマーク("?")は、クエリコンポーネント内のデータを表すことができます。 は、クエリコンポーネント内のデータを表すことができます。 注意 古い、誤った の実装では、このようなデータを正しく扱えないことがあります。 を正しく扱えないことがあります。 相対参照用のベースURI (セクション 5.1)。 クエリデータとパスデータを区別できない パスデータ 階層的なセパレータを探すときに、クエリーデータとパスデータを区別できないからだそうです。 しかし クエリコンポーネントはしばしば での識別情報 のペアで識別情報を持ち、頻繁に使用される値の1つは参照です。 よく使われる値のひとつは への参照であるため、時には ユーザビリティのために パーセンテージでエンコードした方が使い勝手が良い場合があります。

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