2012-10-03 92 views
2

假設我我爲什麼要進行urlencode通過GET傳遞的URL

有什麼優勢做

'http://site.com/something?url=' . urlencode('http://lol.com/lol'); 

,而不是僅僅通過在URL中的未編碼版本(例如,安全等)在?爲什麼我應該urlencode通過GET傳遞的東西,而不是隻傳遞一個未編碼的版本(雖然當然,如果URL參數有&或?或=在裏面,那麼我肯定應該編碼它......但是假設他們沒有,爲什麼應該我編碼他們)

回答

1

有URL中有特殊含義的字符。如果你在沒有編碼的情況下傳遞這些字符,那麼這些字符在外部URL中將具有特殊含義(而不是它們所屬的內部URL)。

例如,如果你想通過

http://example.com/foo?1=2&3=4 

而且你不編碼,那麼你將獲得:

http://example.com/?url=http://example.com/foo?1=2&3=4 

url is http://example.com/foo?1=2 
3 is 4 

假設他們沒有,我爲什麼要編碼他們

因爲那你必須看看你傳遞的每一個URL來決定它是否需要編碼。

總是編碼要簡單得多,而且不容易出錯,然後根據具體情況來決定。

0

只要我知道第二個示例是相當不錯的,如果你有在您的網址中使用unicode字符的可能性。