今日、次の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なのか、主に興味があります。
はい、有効です。 URL内のfirst?
のみが意味を持ち、それ以降はリテラルの疑問符として扱われます。
クエリコンポーネントは、最初の疑問符( "?")文字で示され、シャープ記号( "#")文字またはURIの末尾で終了します。
...
文字のスラッシュ( "/")および疑問符( "?")は、クエリコンポーネント内のデータを表す場合があります。いくつかの古い誤った実装は、階層参照を検索するときにクエリデータとパスデータを区別できないため、相対参照(セクション5.1)のベースURIとして使用すると、そのようなデータを正しく処理できない可能性があることに注意してください。ただし、クエリコンポーネントは "key = value"ペアの形式で識別情報を運ぶためによく使用され、頻繁に使用される値の1つは別のURIへの参照であるため、これらの文字のパーセントエンコードを回避する方が使いやすい場合があります。
接線方向に関連する答えとして、foo?spam=1?&eggs=3
はパラメータspam
に値1?