【发布时间】:2017-12-18 15:41:23
【问题描述】:
我们使用查询字符串中的大量数据发出 HTTP GET 请求,表示要检索的集合的所有 id。
关于 url 中查询字符串的长度限制,快速谷歌搜索说:
RFC 3986 也声明没有限制,但表明主机名是 由于 DNS 限制(第 2.3.3 节),限制为 255 个字符。 Microsoft 声明 Internet Explorer 中 URL 的最大长度 是 2,083 个字符,路径中不超过 2,048 个字符 URL 的一部分。2009 年 5 月 1 日
如果我们不使用 IE,我是否应该担心可能超出查询字符串长度的限制? 我确定我在我的 Node.js Express 服务器上看到了超出限制,特别是当我在 GET 请求的查询字符串中包含一个表示图像的 base64 字符串时。
解决这个问题的好方法是什么?我们应该只使用 HTTP POST 请求吗?当然,我们不想为了避免这个问题而将 1 个 GET 请求分成 1000 个。
【问题讨论】:
-
使用 Chrome Canary 后,我们很快就达到了 URL 长度的限制(绝对不是接近无限长度的任何东西)。
-
@CássioMazzochiMolin 我不是故意让你删除你的答案,我更想讨论一下。我的评论可能听起来措辞过于强硬。
-
@CodeCaster 这绝对是一个糟糕的设计:持久性将是一个问题,并且肯定会违反无状态约束。我删除以避免鼓励其他用户采用这种方法:)
-
@CássioMazzochiMolin 很高兴你同意。很遗憾看到在上述评论中链接的问题中多次提到相同的方法。真的很难做到很好,然后,你仍然在构建一个额外的依赖项,只是为了让你的搜索“安静”,不管这意味着什么。当然你可以问自己为什么首先需要一个参数权重为 2 KB 的搜索...
-
Web 基础设施通常允许缓存 GET 请求,但 HTTP 查询字符串的长度有限。它可以受到客户端(Firefox、IE、...)、服务器(Apache、IIS,...)或网络设备(应用防火墙,...)的限制。我想,在这种情况下,我们应该使用 POST。我阅读并获得了参考链接here
标签: http url web get query-string