1

URL にアクセスした場合:

http://foo/bar

Web ブラウザはfooポート 80 で TCP によってホストに接続し、GET 要求を送信します。

GET /bar HTTP...

明らかに、そのbar部分のすべての文字が機能するわけではありません (逐語的に送信されます)。たとえば、スペース文字 (#20)。

可能な 256 バイトのうち、標準の Web ブラウザがアドレス バーに入力された URL から GET 要求にそのまま (特別なエンコードなしで) そのまま送信するのはどれで、送信しないのはどれですか?

4

1 に答える 1

0

RFC-3986は、予約文字と予約されていない文字について説明しています。予約されていない文字は、特別なエンコードなしで使用できます。それ以外はすべて、%xx表記を使用してURLエンコードする必要があります。

予約されていない文字には、大文字と小文字、10進数、ハイフン、ピリオド、アンダースコア、およびチルダが含まれます。

ブラウザは、サーバーへのソケット接続を開く前に、スペースやその他の文字を自動的にエスケープするのに十分な機能を備えています。

編集

予約文字は、本来の目的で使用する場合はエンコードする必要はありません。ただし、クエリ文字列またはパスコンポーネントの一部として使用する場合は、URLエンコードする必要があります。

予約文字は! * ' ( ) ; : @ & = + $ , / ? # [ ]

たとえば、ここにURLがあります

http://example.com:8090/email/tigerwoods%40gmail.com?folder=sport%2Fgolf

ここでは、/?は通常の役割を果たしている場合はエンコードされません。ただし、@シンボルは電子メールの一部としてエンコードされます。は/、クエリ文字列パラメータの一部としてもエンコードされます。

于 2012-11-18T06:59:02.223 に答える