假设我
http://site.com/something?url=http://lol.com/lol
是否有任何优势(例如安全性等)
'http://site.com/something?url=' . urlencode('http://lol.com/lol');
而不只是传入未编码的url版本?我为什么要urlencode通过GET传递的东西,而不是只传入一个未编码的版本(当然,如果url param中有&或?或=然后我应该编码它...但是假设它们没有,为什么我应该编码吗?
答案 0 :(得分: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以确定它是否需要编码。
总是编码更简单,更不容易出错,然后根据具体情况决定。
答案 1 :(得分:0)
只要我知道第二个样本非常好,如果你有可能在你的网址中使用unicode字符。