Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 是否允许大小为269KB的HTTP Get请求?_Python_Http - Fatal编程技术网

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

Python 是否允许大小为269KB的HTTP Get请求?,python,http,Python,Http,我正在调试一个测试用例。我使用Python的OptionParser(来自optparse)进行一些测试,其中一个选项是HTTP请求 在本例中,http请求的输入大小为269KB。 因此,我的python程序因“参数列表太长”而失败(我验证了没有传递其他参数,只有请求和选项解析器所期望的另一个参数。当我丢弃一些请求并减小其大小时,一切正常。因此我有充分的理由相信请求的大小导致了我的问题。) HTTP请求有可能那么大吗? 如果是这样,我如何修复OptionParser来处理此输入?典型的限制是8K

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

在本例中,http请求的输入大小为269KB。 因此,我的python程序因“参数列表太长”而失败(我验证了没有传递其他参数,只有请求和选项解析器所期望的另一个参数。当我丢弃一些请求并减小其大小时,一切正常。因此我有充分的理由相信请求的大小导致了我的问题。)

HTTP请求有可能那么大吗?
如果是这样,我如何修复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是否设置了限制,操作系统是否设置了限制