当前位置:  开发笔记 > 编程语言 > 正文

如何在编写URL时避免非法字符?

如何解决《如何在编写URL时避免非法字符?》经验,为你挑选了1个好方法。

我正在编写一个Web应用程序,它根据某些输入动态创建URL,并在另一时间由客户端使用.为了便于讨论,这些URL可以包含某些字符,例如正斜杠(即'/'),它不应该被解释为实际URL的一部分,而只是作为参数.例如:

http://mycompany.com/PartOfUrl1/PartOfUrl2/ArgumentTo/Url/GoesHere

如您所见,ArgumentTo/Url/GoesHere确实具有正斜杠但应忽略或转义.

这可能是一个不好的例子,但手头的问题更为通用,适用于其他特殊字符.

因此,如果有一些URL只是参数 s并且不应该用于解析实际的Web请求,那么处理这个问题的好方法是什么?

更新:

鉴于一些答案,我意识到我没有指出一些希望有助于澄清的内容.

我想保持这种语言不可知,因为如果客户端可以提出请求会很好.例如,如果客户端知道它想要传递ArgumentTo/Url/GoesHere,那么如果可以将其编码为一个唯一的字符串,服务器可以在其中转换并对其进行解码以供使用,那将会很棒.

我们可以假设.NET Framework中的HttpUtility.HtmlEncode/HtmlDecode等类似函数可以在其他系统/平台上使用吗?URL不一定非常漂亮,因此在路径中使用真正的单词并不重要.

像参数的base64编码一样吗?

似乎base64编码/解码在任何平台/语言上都相当容易.



1> Ross..:

你没有说你正在使用哪种语言,但PHP具有有用的urlencode功能和C#HttpUtility.URLEncode,Server.UrlEncode并且应该很好地编码你网址的一部分.

如果您需要其他方式,此页面包含编码值列表.例如:/ == %2f.

更新

根据您的更新,我会说使用Voyagerfan的URLRewriting的想法来做类似的事情:

http://www.example.com/([A-Za-z0-9/]+) http://www.example.com/?page=$1

然后使用应用程序GET解析器将其过滤掉.

推荐阅读
ERIK又
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有