如何使用CGI模拟网络(连接)错误

时间:2013-07-26 17:52:03

标签: perl

我的CGI脚本使用标题Content-Disposition: attachmentTransfer-Encoding: chunked,因此我以块的形式打印文件内容。

由于内容取决于许多因素并且是实时生成的,因此在某些情况下脚本无法完成其工作。如果发生这种情况,则已发送的部分内容为无效文件。如果脚本以常规方式结束,则Web服务器关闭连接和浏览器接受内容完成,并提供用户保存或打开下载的文件,即使它无效。

我正在寻找解决方案如何模拟网络错误或任何会导致某些错误的类似错误,因此浏览器不会认为下载已成功完成,也不会提供客户端保存或打开此类文件。

3 个答案:

答案 0 :(得分:0)

如果遇到无法生成剩余输出的情况,可能一种方法是让脚本出现运行时错误(例如除以零错误)。我很好奇浏览器在这种情况下会如何回应。

答案 1 :(得分:0)

由于您在面对错误时正在测试客户端的行为,因此以下内容可能适用。

为CGI创建一个模拟器,它将接受传入连接,将一些数据发送回客户端,然后在关闭连接之前休眠 n 秒。然后将客户端配置为具有小于 n 的超时值。此时,您的客户端代码应该超时并输入错误处理代码。

答案 2 :(得分:0)

我不确定我是否完全掌握了这里的服务器逻辑;但每当我不得不弄乱连接时,我通常会使用netem来引入数据包丢失和/或延迟(例如触发超时) - YMMV。