1

上下文:ASP.NET MVC 2.0

我想支持以下格式的 URL:

wowreforge.com?Exp=220,Hit<461,Mastery>Haste>Crit

它适用于 FF 和 IE。输入时,它们都正确地转义符号。

我的问题:有什么理由不使用上面的 URL 形式吗?

背景
我希望 URL 可用作通用公式,您可以将其粘贴到主题讨论或即时消息中。就像是:

我认为对于战斗盗贼wowreforge.com?Exp=220,Hit<461,Mastery>Haste>Crit是最好的重铸策略。

欢迎任何替代实施想法。

4

3 回答 3

1

您应该始终通过 Web 框架的 URL 编码函数运行这些值。这样的函数将对需要编码的值进行编码,而不对不需要编码的值进行编码。

这比试图猜测查询字符串中哪些字符可以,哪些不可以更好。

另请注意,您应该将此编码应用于每个查询字符串参数的值 - 而不是整个查询字符串本身。(否则,例如,您最终会错误地对拆分参数的 & 符号进行编码)

于 2010-12-17T17:33:43.763 回答
1

<并且>不允许在 URL 中使用,并且必须使用百分比编码进行编码。

但除此之外,浏览器显示 URL 的方式与实际编码方式之间存在差异。例如,现代浏览器显示以 UTF-8 表示字符的百分比编码单词序列,而不是编码单词。因此,类似的 URLhttp://en.wikipedia.org/wiki/%C3%9F通常显示为http://en.wikipedia.org/wiki/ß虽然它实际上被编码为http://en.wikipedia.org/wiki/%C3%9F.

于 2010-12-17T17:33:57.803 回答
0

RFC 1738 说这是一个坏主意:

"...只有字母数字 [0-9a-zA-Z]、特殊字符 "$-_.+!*'()," [不包括引号 - ed] 以及用于其保留目的的保留字符可以在 URL 中使用未编码。”

尝试使用 ASCII 控制代码对所有特殊字符进行编码。这是通过 URL 发送特殊字符的安全方式。

于 2010-12-17T17:33:19.943 回答