我目前正在学习 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 的目的是什么。
我目前正在学习 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 的目的是什么。
这取决于您要使用该 URL 做什么。
当您只使用 document.location = url 时,您不希望它被编码。
如果您打算将该 URL 作为变量传递,那么是的,您希望对其进行编码,否则会混淆浏览器。例如:
http://www.someurl.com?myFavwebsite=http://www.stackoverflow.com?someParam=test。
看看这可能会让浏览器感到困惑吗?
顺便说一句,永远不要在 url 或 php 文件中使用空格。我总是发现这会造成不必要的压力。:)
根据 RFC 3986 标准,URL 中只允许使用有限数量的字符。例如,如果 URL 中有空格,除非您对其进行编码,否则这将使 URL 无效。
通常,浏览器可以通过自己进行编码来处理未正确编码的 URL,但这不是您作为 Web 开发人员应该依赖的东西。
当使用 URL 作为另一个 URL 的参数时,URL 编码也很重要。在这种情况下,需要对 URL 的保留字符进行编码,而不仅仅是不允许的字符。但是,为此,您不要使用encodeURI
, 而是encodeURIComponent
。