javascript - URL 中是否允许使用 ?&

标签 javascript url

我正在审查一些代码,我看到了这样的东西:

if (result.indexOf('?') === -1) {
    result += '?';
}
result += '&' + SOMETHING;

很明显,这会导致像这样的 URL http://example.com?&a=b

代码的作者在代码中没有看到任何异常,但是 ?& 困扰着我。我在 RFC 中找不到任何对 URI 的限制来证明他是错误的(或者我错过了)。

很明显,在 Chrome 开发工具的网络选项卡中,它显示为空对: enter image description here

这样的 URL 应该困扰我还是我只是多疑?

最佳答案

这种情况会被大多数服务器解释为空值,所以是的,它确实有效。将要发生的是服务器在 ? 和每个 & 之间进行检查,然后相应地分隔 = 处的值。

因此,当 ?&(或两个 &)之间没有任何内容时,这些值都将为空。缺少 = 会影响值是 ""还是 null,但不会使查询无效。

注意这一点,因为某些解析器可能认为它无效,因此您在使用自定义解析器(例如在 JavaScript 中)时可能会遇到问题。

关于javascript - URL 中是否允许使用 ?&,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42254085/

相关文章:

javascript - 从谷歌标记获取纬度/经度

javascript - 使用 HTML5 Canvas 截取网页的一部分?

url - Symfony2 动态路由到具有多个可选参数的一个 Controller 操作

git - 如何设置一个 repo,以便在克隆时它有两个不同的地址用于推送和获取?

php - GET 中的 GET

java - 未知主机异常,Apache HttpClient,Java,wunderground

ruby - 如何将哈希连接到 URL 参数?

javascript - PWA 应用程序,移动 Chrome,强制重新加载 js 缓存文件

javascript - 文本区域内精美的数据输入、验证和布局

javascript - AngularJS 指令模板 URL 需要前导斜杠,中断测试