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

Gar*_*ght 6 url http

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

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

http://example.com/foo?a&b
Run Code Online (Sandbox Code Playgroud)

这是因为当我编写的Drupal模块的用户解析并重写URI时,注意到代码有时会导致查询字符串部分由于某些底层PHP函数的行为而以意想不到的方式发生变化.例如:

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

a=&b=
Run Code Online (Sandbox Code Playgroud)

这是我应该担心的事情吗?

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

Pau*_*xon 3

RFC 3986 统一资源标识符 (URI):通用语法?除了应如何处理类似字符之外,没有任何关于查询字符串结构的说明。严格来说,您的两个示例 URL不同的。当然,接收这些查询字符串的应用程序可能会将它们视为功能上等效的,但这不是您可以单独从 URL 确定的。