我目前正在學習JavaScript,我不明白爲什麼編碼URL很重要。爲什麼字符編碼對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更改爲後一個。
我目前正在學習JavaScript,我不明白爲什麼編碼URL很重要。爲什麼字符編碼對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更改爲後一個。
根據RFC 3986標準,URL中只允許有限數量的字符。例如,如果您在URL中有空格,則這會使網址無效,除非您對其進行編碼。
通常,瀏覽器可以通過自己編碼來處理未正確編碼的URL,但這不是您應該依賴的Web開發人員。
當使用URL作爲另一個URL的參數時,URL編碼也很重要。在這種情況下,URL的保留字符需要被編碼,而不僅僅是不允許的字符。但是,對於此,您不使用encodeURI
,而是使用encodeURIComponent
。
這取決於你將如何使用該URL。
當你只是使用document.location = url,你不希望它編碼。
如果您打算將該URL作爲變量傳遞,那麼您希望它編碼,否則會混淆瀏覽器。例如:
http://www.someurl.com?myFavwebsite=http://www.stackoverflow.com?someParam=test。
看看這可能會讓瀏覽器感到困惑嗎?
順便說一句,請不要在url或php文件中使用空格。我一直髮現這會造成不必要的壓力。 :)
因爲否則就不可能告訴,例如,「?」是URL字符串的一部分還是表示GET參數的開始。 – 2012-09-08 23:53:52