2017-06-22 17 views
0

クエリー文字列には2つの区切り文字があります。 ?&です。どちらの場合もなぜ?を使用しないのですか?なぜ必要なのですか&
RFC 3986は標準の説明を与えますが、その主題に動機づけを与えません。なぜクエリパラメータの区切り文字が2つありますか?

クエリコンポーネントは、最初の質問 マーク(「?」)文字で示され、番号記号(「#」)文字 によって、あるいはURIの終わりで終了します。

答えて

1

さまざまなURLの仕様を読むと、<query>コンポーネントの構文が設定されていないことがわかります。実際、クライアントとサーバーは、許可/予約された文字の制限の対象となる文字列の構文について合意することができます。

最も一般的に使用される?<name>=<value>&<name>=<value>構文は、HTML仕様に基づいています。フォームパラメータの "application/x-www-form-urlencoded"エンコーディングスキームを指定するHTML仕様のセクション(すべてのバージョンを選択)を探します。

なぜHTML仕様ではパラメータセパレータとして&を使用しないのですか? URLスペックでは?で、<query>部分にが予約されていると言われています。 (したがって、HTMLがセパレータとして?を使用する場合は、パーセント符号化する必要があります)

<query>の部分に?が予約されているのはなぜですか?さて、統一されたURL仕様が存在する前に、http:ハイパーリンクの歴史に入っています。基本的にはわかりませんが、でした。初期のWebサーバーやブラウザがハイパーリンクを解析する方法に関連していました。

関連する問題