首页 文章

查询字符串的最大可能长度是多少?

提问于
浏览
465

它依赖于浏览器吗?另外,不同的Web堆栈对于从请求中获取的数据量有不同的限制吗?

4 回答

  • 2

    虽然官方没有限制,但许多安全配置建议声明服务器上的maxQueryStrings应设置为1024的最大字符数限制,而包含查询字符串的整个URL应设置为最多2048个字符 . 这是为了防止Web服务器上的Slow HTTP Request漏洞阻止慢速DDOS攻击 .

  • 9

    不同的Web堆栈确实支持不同长度的http请求 . 我从经验中知道早期的Safari堆栈只支持4000个字符,因此因用户状态而难以处理ASP.net页面 . 这甚至适用于POST,因此您必须检查浏览器并查看堆栈限制 . 我认为即使在较新的浏览器上你也可能达到极限 . 我记不起了,但其中一个(IE6,我认为)有16位限制,32,768或其他限制 .

  • 867

    RFC 2616(超文本传输协议 - HTTP / 1.1)声明查询字符串的长度没有限制(第3.2.1节) . RFC 3986也表示没有限制,但表示由于DNS限制,主机名限制为255个字符(第2.3.3节) .

    虽然规范没有规定任何最大长度,但Web浏览器和服务器软件会施加实际限制 . 基于Boutell.com的研究结果:

    • Microsoft Internet Explorer (Browser)
      Microsoft声明Internet Explorer中URL的最大长度为2,083个字符,URL的路径部分中不超过2,048个字符 . 尝试使用超过此值的URL会在Internet Explorer中生成明确的错误消息 .

    • Microsoft Edge (Browser)
      限制似乎约为81578个字符 . 见URL Length limitation of Microsoft Edge

    • Chrome
      它会在64k字符后停止显示URL,但可以提供超过10万个字符 . 除此之外没有进行进一步的测试 .

    • Firefox (Browser)
      在65,536个字符后,位置栏不再显示Windows Firefox 1.5.x中的URL . 但是,较长的网址可以使用 . 100,000个字符后没有进一步测试 .

    • Safari (Browser)
      至少80,000个字符可以使用 . 除此之外没有尝试过测试 .

    • Opera (Browser)
      至少190,000个字符可以使用 . 在190,000个字符后停止测试 . Opera 9 for Windows继续在位置栏中显示完全可编辑,可复制和可粘贴的URL,即使是190,000个字符 .

    • Apache (Server)
      早期尝试在Web浏览器中测量最大URL长度会导致服务器URL长度限制大约为4,000个字符,之后Apache会产生"413 Entity Too Large"错误 . 使用了目前在Red Hat Enterprise Linux 4中发现的最新Apache构建版本 . 官方Apache文档仅提到请求中单个字段的8,192字节限制 .

    • Microsoft Internet Information Server (Server)
      默认限制为16,384个字符(是的,Microsoft 's web server accepts longer URLs than Microsoft'的Web浏览器) . 这是可配置的 .

    • Perl HTTP::Daemon (Server)
      最多可以使用8,000个字节 . 那些使用Perl的HTTP :: Daemon模块构建Web应用程序服务器的人将在所有HTTP请求头的组合大小上遇到16,384字节的限制 . 这不包括POST方法表单数据,文件上载等,但它确实包含URL . 实际上,当URL明显长于8,000个字符时,这会导致413错误 . 可以轻松删除此限制 . 在Daemon.pm中查找所有出现的16x1024,并用更大的值替换它们 . 当然,这确实会增加您遭受拒绝服务攻击的风险 .

  • 1

    我假设你的意思是uri字符串的最大长度 . This可能有所帮助 .

    通常,一旦URI因为太长而无法读取,就应该使用POST请求了 .

相关问题