基本上,我正在尝试向我的网站发送2GB HTTP POST数据包进行测试,因为HTTP GET不能达到那么高。但是,我对此并不十分熟悉,并且需要有关如何实际尝试这一点的建议/解释。提前谢谢。
答案 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,以便传输数据的任务在后台运行,不会冻结您的浏览器,也不会冻结服务器。
假设:
您的服务器可以通过FTP处理文件传输
您的2GB数据存储在客户端的某个位置,而不是即时生成。
您可以使用FTP管理文件传输(连接和实际传输)的JavaScript库
使用上述库和一些AJAX,您还需要将http POST请求生命周期与文件传输的状态同步。然后,在请求中,您可以坚持仅提交有关您正在上传的2GB的信息。
我的引擎搜索了类似“ftp javascript客户端”的内容,并且只列出了商业浏览器嵌入式FTP客户端。 (如果我说废话,请随意纠正我。)