1

私は現在JavaScriptを学んでいますが、URLをエンコードすることが重要である理由がわかりません。

>>> var url = 'http://www.packtpub.com/scr ipt.php?q=this and that';
>>> encodeURI(url);

「http://www.packtpub.com/scr%20ipt.php?q=this%20and%20that」

たとえば、この例では、最初のURLを後者のURLに変更するのにどのような目的がありますか。

4

2 に答える 2

6

それはあなたがそのURLで何をしようとしているのかによります。

document.location = urlを使用するだけの場合は、エンコードする必要はありません。

そのURLを変数として渡すことを計画している場合は、はい、エンコードする必要があります。そうしないと、ブラウザーが混乱します。例えば:

http://www.someurl.com?myFavwebsite=http://www.stackoverflow.com?someParam=test

それがブラウザを混乱させる可能性があることを確認してください。

ちなみに、urlまたはphpファイルでスペースを使用しないでください。私はいつもそれが不必要なストレスを引き起こすことを発見しました。:)

于 2012-09-08T23:54:39.833 に答える
5

RFC 3986標準に従って、URLで許可される文字数は限られています。たとえば、URLにスペースがある場合、エンコードしない限りURLは無効になります。

多くの場合、ブラウザーは、自身でエンコードを行うことによって適切にエンコードされていないURLを処理できますが、それはWeb開発者として信頼すべきものではありません。

URLを別のURLのパラメータとして使用する場合も、URLエンコードは重要です。この場合、許可されていない文字だけでなく、URLの予約文字をエンコードする必要があります。ただし、このためには、を使用しませんが、を使用しencodeURIますencodeURIComponent

于 2012-09-09T00:04:03.897 に答える