我正在审查一些代码,我看到了这样的东西:
if (result.indexOf('?') === -1) {
result += '?';
}
result += '&' + SOMETHING;
很明显,这会导致像这样的 URL http://example.com?&a=b
代码的作者在代码中没有看到任何异常,但是 ?& 困扰着我。我在 RFC 中找不到任何对 URI 的限制来证明他是错误的(或者我错过了)。
很明显,在 Chrome 开发工具的网络选项卡中,它显示为空对:
这样的 URL 应该困扰我还是我只是多疑?
最佳答案
这种情况会被大多数服务器解释为空值,所以是的,它确实有效。将要发生的是服务器在 ?
和每个 &
之间进行检查,然后相应地分隔 =
处的值。
因此,当 ?
和 &
(或两个 &
)之间没有任何内容时,这些值都将为空。缺少 =
会影响值是 ""还是 null,但不会使查询无效。
注意这一点,因为某些解析器可能认为它无效,因此您在使用自定义解析器(例如在 JavaScript 中)时可能会遇到问题。
关于javascript - URL 中是否允许使用 ?&,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42254085/