7
何が有効で、URIクエリにないものは何ですか?
背景(質問はさらに下) 私はこれを何度もグーグルで調べて、RFCとSOの質問を読んでこれを解こうとしましたが、それでもジャックはありません。 だから、私たちは「最良の」答えに投票するだけだと思います、それだけですか? 基本的には、これに要約されます。 3.4。クエリコンポーネント クエリコンポーネントは、リソースによって解釈される情報の文字列です。 query = *uric クエリコンポーネント内では、文字「;」、「/」、「?」、「:」、「@」、「&」、「=」、「+」、「、」、および「$」は予約されています。 最初に私を驚かせることは* uricがこのように定義されていることです uric = reserved | unreserved | escaped reserved = ";" | "/" | "?" | ":" | "@" | "&" | "=" | "+" | "$" | "," ただし、これは次のような段落でいくらか明確になります。 上記の「予約済み」構文クラスは、URI内では許可されているが、汎用URI構文の特定のコンポーネント内では許可されていない可能性がある文字を指します。これらは、セクション3で説明するコンポーネントの区切り文字として使用されます。 「予約済み」セットの文字は、すべてのコンテキストで予約されているわけではありません。特定のURIコンポーネント内で実際に予約されている文字のセットは、そのコンポーネントによって定義されます。一般に、文字がエスケープされたUS-ASCIIエンコーディングで置き換えられた場合にURIのセマンティクスが変更されると、文字は予約されます。 この最後の抜粋はやや逆に感じられますが、予約された文字セットはコンテキストに依存すると明確に述べています。しかし3.4では、すべての予約文字はクエリコンポーネント内で予約されていると述べていますが、URIはクエリ文字列の概念を定義していないため、ここでセマンティクスを変更するのは疑問符(?)をエスケープすることだけです。 この時点で私は完全にRFCをあきらめましたが、RFC 1738は特に興味深いものでした。 HTTP URLの形式は次のとおりです。 http://<host>:<port>/<path>?<searchpart> <path>および<searchpart>コンポーネント内で、「/」、「;」、「?」予約されています。"/"文字は、階層構造を指定するためにHTTP内で使用できます。 …