1. ホーム
  2. url

[解決済み] url クエリパラメータに値がない場合、有効ですか?

2022-04-22 05:30:31

質問

のようなurlは http://example.com/foo?bar は有効ですか?

どちらか一方を示す公式なものへのリンクが欲しいのです。 単純なイエス/ノー回答や逸話的な証拠では意味がありません。

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

  • URI RFCに対して有効
  • サーバーサイドのフレームワークやコードに受け入れられそうなもの

URI RFC は、クエリ文字列の形式を義務付けていません。 クエリー文字列がしばしば名前-値ペアを運ぶことは認識されていますが、それは必須ではありません(例えば、しばしば別のURIを含むでしょう)。

<ブロッククオート

3.4. クエリ

クエリコンポーネントには、非階層的なデータが含まれ、そのデータとともに パスコンポーネント (セクション 3.3) のデータによって URIのスキームと命名権の範囲内にあるリソースが含まれます。 (もしあれば) ...

<ブロッククオート

... しかし、クエリコンポーネント の形で識別情報を伝えるために使われることが多い。 キー=値" のペアで、よく使われる値の1つが 別のURI、 ...

HTML は、HTTP GETで送信されるフォームが、フォームの値を "?key1=value1&key2=value2..."(適切にエンコードされた)形式の名前-値ペアでエンコードすべきことを確立します。 クエリー文字列の解析は、サーバーサイドのコード(Javaサーブレットエンジンなど)に任されています。

サーバーサイドフレームワークを使用しているかどうかが不明ですが、サーバーサイドフレームワークは、クエリー文字列が常に名前と値のペアであると想定している可能性があり、その形式でないクエリー文字列 (例. ?bar ). もし独自のコードでクエリ文字列を解析しているのであれば、そのクエリ文字列のフォーマットを確実に処理する必要があります。 フレームワークの場合は、ドキュメントを参照するか、それがどのように処理されるかをテストする必要があります。