冒号 `:` 是否适合用于友好的URL?

136
我们正在设计一个URL系统,将应用程序部分指定为由斜杠分隔的单词。具体来说,在GWT中,相关部分的URL将在哈希中(将由客户端的控制器层解释)。
http://site/gwturl#section1/section2

有些部分可能需要额外的属性,我们希望使用:指定这些属性,以便URL的部分是明确无歧义的。代码将首先在/上拆分,然后在:上进行拆分,就像这样:

http://site/gwturl#user:45/comments
当然,我们这样做是为了使URL友好。因此,我们希望确保浏览器或任何其他系统不会对具有特殊含义的这些字符进行URL编码,并以以下方式结束URL:
http://site/gwturl#user%3A45/comments <--- BAD

在这种方式下使用冒号安全(我的意思是不会自动编码)对于浏览器、书签系统,甚至JavaScript或Java代码而言,是否安全?


也许更清楚地指明你只在客户端使用URL是个好主意,因为很多答案(包括我的)似乎都假设你会使用HTTP将URL发送到服务器。 - Veger
编辑以添加澄清,片段的使用发生在客户端。 - Nicole
我很好奇:10个月后,这个URL方案对你有用吗?我正在考虑使用相同的方案。 - Jonathan Swinney
1
@Jonathan Swinney,很遗憾我已经从这个项目(和公司)离开了,尽管这里的答案让我满意,并且证明了这是正确的方法。如果我要开始一个新的项目,我会使用这个方案,但我也会确保使用 #! 来表示页面是有状态的 - 参见 http://googlewebmastercentral.blogspot.com/2009/10/proposal-for-making-ajax-crawlable.html (这个提议已经被像Facebook这样的重度 AJAX 用户所遵循)。 - Nicole
2
我刚刚发现WhatsApp会在第一个冒号处截断URL,例如它会使谷歌地图的URL无效。因此,对它进行转义是很重要的。 - Petruza
为什么要在URL中使用冒号?以下的URL是否有效?"../video/:videoId" - vikramvi
11个回答

-5

这不是一个安全字符,当它紧跟在您的域名后面时,用于区分您连接到哪个端口。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接