如何向站点发送2GB POST数据包?

时间:2013-01-23 20:52:52

标签: java http post packets

基本上,我正在尝试向我的网站发送2GB HTTP POST数据包进行测试,因为HTTP GET不能达到那么高。但是,我对此并不十分熟悉,并且需要有关如何实际尝试这一点的建议/解释。提前谢谢。

2 个答案:

答案 0 :(得分:3)

尝试这样做时会出现许多问题。我将尝试简要介绍一下 -

1)服务器设置 - 出于安全原因,许多服务器默认会阻止2GB POST(具有无限制或高位置最大值会使DoS更容易)。 PHP的默认值为20M。

1-a)服务器设置 - 许多服务器也有超时设置,如果请求在一定时间内没有完成,它将放弃该请求。 2GB可能会导致此设置触发。

2)浏览器设置 - 我对此不感兴趣,但您的浏览器也可能会尝试阻止此操作。

3)硬件 - 可能会出现多个可能导致问题的硬件瓶颈。物理内存(服务器和客户端),网络带宽,可用的硬盘空间(服务器上的写入权限,取决于您在发布时的操作)。

4)第三方主机 - 如果您的网站由第三方托管,他们可能已实施安全措施以阻止此行为。

这可能不是一个完整的列表 - 但是2GB的帖子文件可能会在转移过程中的许多不同阶段遇到问题。

如果你想要一种发送方式 - 这是一种方式

<html>
    <body>
            <form method="post">
                    <input type="hidden"
                    <?php
                            echo " value='";
                            for($i=0;$i<2147483648;$i++)
                                    {
                                            echo "a";
                                    }
                            echo "'";
                    ?>
                    >
                    <input type="submit">
            </form>
<?php if(isset($_POST['test'])){
    echo $_POST['test'];
}
?>
    </body>
</html>

虽然,我不建议使用这种方式。我没有测试它,因为我现在不想破坏我的网络服务器。而我的数学,可能有点偏离 - 但假设1个字符是1个字节(基本ascii)。如果页面加载,这将有效。

答案 1 :(得分:0)

由于使用HTTP请求将2GB从A点转移到B点似乎不合适(在您的情况下也是如此?),您可能希望在某些时候查看FTP / Javascript,以便传输数据的任务在后台运行,不会冻结您的浏览器,也不会冻结服务器。

假设:

  1. 您的服务器可以通过FTP处理文件传输

  2. 您的2GB数据存储在客户端的某个位置,而不是即时生成。

  3. 您可以使用FTP管理文件传输(连接和实际传输)的JavaScript库

  4. 使用上述库和一些AJAX,您还需要将http POST请求生命周期与文件传输的状态同步。然后,在请求中,您可以坚持仅提交有关您正在上传的2GB的信息。

  5. 我的引擎搜索了类似“ftp javascript客户端”的内容,并且只列出了商业浏览器嵌入式FTP客户端。 (如果我说废话,请随意纠正我。)