空URI查询字符串参数:“a =& b =”与“a& b”

时间:2012-03-25 23:10:50

标签: http url

以下网址是否应被视为功能相同?

http://example.com/foo?a=&b=

http://example.com/foo?a&b

当我编写的Drupal模块的用户分解并重写URI noticed时,代码有时会导致查询字符串部分由于某些底层PHP函数的意外方式而发生变化表现。例如:

parse_str("a&b", $values); print http_build_query($values);

a=&b=

这是我应该担心的吗?

编辑所以SO停止抱怨这个问题与另一个问题类似:问题是,假设“X的值没有”和“X的空值”是等价的,而不是“无价值”的样式是否安全在语法上是正确的(它是)。

1 个答案:

答案 0 :(得分:1)

RFC 3986 Uniform Resource Identifier (URI): Generic Syntax除了应该处理像?之类的字符之外,对查询字符串的结构没有任何说法。严格来说,您的两个示例网址 不同。当然,接收这些查询字符串的应用程序可能会将它们视为功能上等同,但这不是您可以从URL单独确定的内容。