Python 是否允许大小为269KB的HTTP Get请求?
我正在调试一个测试用例。我使用Python的OptionParser(来自optparse)进行一些测试,其中一个选项是HTTP请求 在本例中,http请求的输入大小为269KB。 因此,我的python程序因“参数列表太长”而失败(我验证了没有传递其他参数,只有请求和选项解析器所期望的另一个参数。当我丢弃一些请求并减小其大小时,一切正常。因此我有充分的理由相信请求的大小导致了我的问题。) HTTP请求有可能那么大吗?Python 是否允许大小为269KB的HTTP Get请求?,python,http,Python,Http,我正在调试一个测试用例。我使用Python的OptionParser(来自optparse)进行一些测试,其中一个选项是HTTP请求 在本例中,http请求的输入大小为269KB。 因此,我的python程序因“参数列表太长”而失败(我验证了没有传递其他参数,只有请求和选项解析器所期望的另一个参数。当我丢弃一些请求并减小其大小时,一切正常。因此我有充分的理由相信请求的大小导致了我的问题。) HTTP请求有可能那么大吗? 如果是这样,我如何修复OptionParser来处理此输入?典型的限制是8K
如果是这样,我如何修复OptionParser来处理此输入?典型的限制是8KB,但它可能会有所不同(比如,甚至更小)。GET请求与POST请求不同,它包含url本身的所有信息。这意味着您有一个269KB的url,它非常长 虽然理论上没有允许的大小限制,但许多服务器不允许URL长度超过两KB,在这种情况下应返回414响应代码。安全限制为2KB,尽管大多数现代软件允许的长度略高于此 但是,对于269KB,使用
POST
(或者PUT
,如果语义更正确的话),它可以包含更大的数据块作为请求的内容,而不是url
HTTP请求有可能那么大吗
是的,这是可能的,但不建议这样做,而且根据web服务器配置,您可能会遇到兼容性问题。如果您需要传递大量数据,则不应使用GET
如果是,我如何修复OptionParser来处理此输入
似乎OptionParser已经设置了自己的限制,远远超过了实际实现的限制。我认为唯一的“修复”方法是获取Python源代码并修改它以满足您的需求。或者编写您自己的解析器
更新:我可能错误地解释了这个问题,下面Padraic的评论可能是正确的。如果您的命令行参数大小达到了操作系统的限制,那么这不是OptionParser问题,而是系统设计中更基本的问题,这意味着您可能必须重新考虑您的解决方案。这也可能解释了为什么您需要您试图在应用程序中使用GET(以便可以在命令行上传递它?是否从命令行传递很长的字符串?“参数列表太长”听起来像是shell/操作系统反对您的命令行在HTTP请求运行之前有多长时间(但是,是的,其他人是正确的,在269KB之前就已经达到了顶点)。不要使用选项为请求传递数据。你应该将其作为流。这可能与字符串长度有关。我怀疑OptionParser是否设置了限制,操作系统是否设置了限制