是否允许大小为269KB的HTTP Get请求?

时间:2015-07-25 20:09:30

标签: python http

我正在调试一个测试用例。我使用Python的OptionParser(来自optparse)进行一些测试,其中一个选项是HTTP请求。

此特定情况下对http请求的输入大小为269KB。 所以我的python程序失败了"参数列表太长" (我确认没有其他参数传递,只有请求和选项解析器所期望的另一个参数。当我丢弃一些请求并减小其大小时,事情工作正常。所以我有充分的理由相信请求的大小在这里引起了我的问题。)

HTTP请求是否可能那么大? 如果是这样,我如何修复OptionParser来处理此输入?

3 个答案:

答案 0 :(得分:3)

  

HTTP请求是否可能那么大?

是的,但是不建议这样做,并且您可能会遇到兼容性问题,具体取决于您的Web服务器配置。如果您需要传递大量数据,则不应使用GET。

  

如果是,如何修复OptionParser来处理此输入?

似乎OptionParser已经将自己的限制设置为远高于实际实现的限制。我认为解决这个问题的唯一方法是获取Python源代码并对其进行修改以满足您的要求。或者编写自己的解析器。

更新:我可能错误地解释了这个问题,下面的Padraic的评论可能是正确的。如果您已达到命令行参数大小的操作系统限制,那么它不是OptionParser问题,但对您的系统设计来说更重要的是,您可能不得不重新考虑您的解决方案。这也可能解释了为什么你试图在你的应用程序中使用GET(所以你可以在命令行上传递它?)

答案 1 :(得分:2)

与POST请求不同,GET请求在URL本身中包含其所有信息。这意味着您的网址为269KB,非常长。

尽管对允许的大小没有理论上的限制,但许多服务器不允许长度超过几KB的网址, 应该返回414响应代码。安全限制是2KB,尽管大多数现代软件允许更多。

但是,对于269KB,使用POST(或PUT,如果在语义上更正确),它可以包含更大的数据块作为请求的内容而不是URL。

答案 2 :(得分:0)

典型限制为8KB,但它可以变化(例如,甚至更少)。