URLクエリ区切り文字としてのセミコロン



Semicolon Url Query Separator



解決:

1999年のW3C勧告は廃止されました。 2014 W3C勧告によると、現在の状況では、セミコロンは現在 違法 パラメータ区切り文字として:

application / x-www-form-urlencodedペイロードをデコードするには、次のアルゴリズムを使用する必要があります。 [...]このアルゴリズムの出力は、名前と値のペアのソートされたリストです。 [...]



  1. 文字列を、U + 0026アンパサンド文字(&)で文字列ペイロードを厳密に分割した結果とします。

言い換えると、?foo = bar; bazはパラメータを意味しますfooは値を持ちますバー;バズ;一方?foo = bar; baz = snaは次のようになりますfooであることbar; baz = sna(ただし、2回目以降は技術的に違法です=にエスケープする必要があります%3D)。


HTTPサーバーとサーバー側アプリケーションがセミコロンを区切り文字として受け入れる限り、問題はありません。欠点は見当たりません。あなたが言ったように、W3C仕様はあなたの味方です:



HTTPサーバーの実装者、特にCGIの実装者が「;」の使用をサポートすることをお勧めします。 '&'の代わりに、この方法で '&'文字をエスケープする手間を省きます。


ボブ・アマンに同意します。 W3C仕様は、フォームGETリクエストのように見えるURLでアンカーハイパーリンクを簡単に使用できるように設計されています(例:http://www.host.com/?x=1&y=2)。このコンテキストでは、アンパサンドは、すべてアンパサンドで始まる文字エンティティ参照のシステムと競合します(例:')。したがって、W3Cは、これらのURLを簡単に記述できるように、Webサーバーでアンパサンドの代わりにセミコロンをフィールド区切り文字として使用できるようにすることをお勧めします。ただし、このソリューションでは、アンパサンドを何かに置き換える必要があることをライターが覚えておく必要があります。その; Webブラウザがフォームを送信するときにURLでアンパサンドを普遍的に使用している場合でも、は同様に有効なフィールド区切り文字です。これは、アンパサンドをアンパサンドに置き換えることを覚えているよりも間違いなく難しいです。&これらのリンクでは、ドキュメントの他の場所で行われるのと同じように。

さらに悪いことに、すべてのWebサーバーがフィールド区切り文字としてセミコロンを許可するまで、URLライターは一部のホストに対してのみこのショートカットを使用でき、使用する必要があります。& ほかの人のため。また、特定のホストがセミコロン区切り文字の許可を停止した場合は、後でコードを変更する必要があります。これは単に使用するよりも確かに難しいです&、これはすべてのサーバーで永久に機能します。これにより、Webサーバーがフィールド区切り文字としてセミコロンを使用できるようにするインセンティブがなくなります。誰もがすでにアンパサンドをに変更しているのに、なぜわざわざ& それ以外の;?