mirek@toccata:~$ telnet our.server.com 80
Trying 180.153.xxx.xxx...
Connected to our.server.com.
Escape character is '^]'.
GET /test.php HTTP/1.0
Host: our.server.com
Connection closed by foreign host.
mirek@toccata:~$
对我来说,这个问题是由托管公司(Godaddy)将具有大量响应数据(超过几千字节)的 POST 操作视为某种安全威胁引起的。如果在一分钟内发生超过6次这样的事情,那么主机将在下一分钟内拒绝执行响应 POST 请求的 PHP 代码。我不能完全确定主机做了什么,但是我确实看到,在 tcpdump 中,TCP 重置数据包作为对来自浏览器的 POST 请求的响应。这导致 jqXHR 对象返回的 HTTP状态码为0。
将 POST 操作更改为 GET 修复了这个问题。我们不清楚 Godaddy 为什么要设置这个限制,但是更改代码比更改主机更容易。