如何执行包含已编码网址的查询字符串?

时间:2009-12-13 21:42:21

标签: language-agnostic

如何在不“禁止”的情况下执行此操作。其他网站也这样做,例如http://twitter.com?status=http://somesite.com工作得很好。我一直在寻找答案。请有人帮忙!请注意我的示例是自动编码的(想象一下没有%3A)

3 个答案:

答案 0 :(得分:1)

您需要对网址进行编码。带有未编码的URL的查询字符串将成为一个问题。

答案 1 :(得分:1)

如果您不对网址中的网址进行编码,那么无论是谁解释网址,都不会将其视为有效网址。这是因为在你的例子中

http://twitter.com?status=http%3A//somesite.com

%3A是结肠。但根据URI规范,冒号是模式分隔符(http,ftp,irc,等等),而uri只能包含一个。如果我已经阅读了足够多的这些规范,我猜它相当于“接收一个格式错误的网址的服务器应该返回错误信息”或“..来解释它而不保证肯定的响应”。

从技术上讲,//也应该被转义,因为它们是路径分隔符,但只有服务静态内容的服务器会对此作出反应。

有关URI规范,请参阅http://labs.apache.org/webarch/uri/rfc/rfc3986.html

答案 2 :(得分:0)

如果您在Javascript中询问如何执行此操作,则应使用escape / unescape并处理/字符的特殊情况。

看看这个reference.