1

基本上,我试图向我的网站发送一个 2GB 的 HTTP POST 数据包来测试它,因为 HTTP GET 不能达到那么高。但是,我对此不是很有经验,需要关于如何实际尝试的建议/解释。先感谢您。

4

2 回答 2

3

尝试执行此操作时会出现许多问题。我将尝试简要介绍它们-

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

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

2) 浏览器设置 - 我对此并不肯定,但您的浏览器也可能会尝试阻止这种情况。

3) 硬件 - 会有多个硬件瓶颈可能导致问题。物理内存(服务器和客户端)、网络带宽、可用的 HDD 空间(服务器上的写入权限,取决于您对 post 所做的操作)。

4) 3rd Party Host - 如果您的网站由第三方托管,他们可能已经实施了安全措施来阻止这种情况。

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

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

<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)。如果页面完全加载,这将起作用。

于 2013-01-23T21:10:23.823 回答
0

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

假设:

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

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

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

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

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

于 2013-02-22T20:10:45.267 回答