HTTP URL - 参数名称中允许的字符

时间:2009-05-02 11:34:50

标签: http url character-encoding specifications

对于URL参数名称中允许哪些字符有任何正式限制吗?

我一直在阅读RFC3986(“统一资源标识符(URI):通用语法”),但没有得出明确的结论。

我知道存在实际限制,但实际上是否禁止这样做:

param with\funny<chars>=some_value

只要我正确地逃脱它:

param%20with%1cfunny%3cchars%3e=some_value

4 个答案:

答案 0 :(得分:10)

URI规范中的转义参数名称没有限制。但是,您使用的服务器端软件可能存在限制。如果您使用“自制”脚本来解释URI,则尤其如此。

答案 1 :(得分:7)

您还应该阅读RFC2396。它似乎比RFC3986更具信息性。

答案 2 :(得分:2)

网址有保留字符,但只要您转义(urlencode),那么您应该没问题。

根据所使用的框架,如果您尝试提交可疑值,则可能会出现例外情况。 ASP.NET具有内容过滤功能,如果您尝试提交“不安全”数据(如脚本或HTML),则会引发异常。这是框架的一个特性,而不是URL语法强制执行的限制或规则。

答案 3 :(得分:0)

每个RFC 2396的参数名称和值可以包含大写/小写字母,十进制数字和-_。!〜*'()字符。 其他一切都需要逃脱。