我在客户的服务器上遇到了一个非常奇怪的问题。
我在几个脚本中使用了下面发布的代码。$.ajax 配置几乎相同(即只有文件、数据和成功函数更改)并且始终使用 type:POST。
这在大多数情况下都有效,但对于 POST 以下的情况总是失败。将类型更改为 GET 没有问题。
我有点不知道这里发生了什么。
var parameter = {
password : $("#password").val()
};
$.ajax({
type : "POST",
url : "query/submit_password.php",
dataType : "xml",
async : true,
data : parameter,
success : function(aXHR) { /* ... */ },
error : function(aXHR, aStatus, aError) { alert("Error:\n" + aStatus + "\n"+ aError); }
});
此代码始终会导致警报“NetworkError:发生网络错误。”。
再次 - 具有几乎相同代码的其他情况可以正常工作。
Chrome 和 Firefox 开发工具报告一个 POST 错误,没有任何进一步的解释。
知道这里会发生什么吗?
还有一些细节。
- 客户的网站托管在 GoDaddy 上
- 相同的代码在其他服务器上运行良好
- 是的,该文件确实存在,因为 GET 请求有效
- 我尝试过的所有浏览器都没有安装拦截器插件(如 adblock)
HTTPScoop 显示以下结果
(3 次尝试,红色状态显示“连接已被通信伙伴关闭”):
Chrome 显示以下内容:
几乎解决了。
apache 日志显示请求的状态为 403。
它还显示返回的大小为 0,这可能是 chrome 等显示请求失败的原因。
为什么会发生这种情况仍不清楚,但它绝对是服务器端配置问题(很可能是 mod_rewrite 问题或类似的问题)。