在Firefox中使用jquery失败的AJAX https POST请求

我在HTML表中有一个简单的记录列表,每行都有一个删除链接。 删除链接将AJAXpost请求发送到固定url,该url如下:“ /delete/record/5

在使用https的服务器上运行时,使用jquery的.ajax()调用和POST消息创建AJAX请求。 在OSX / Windows体系结构的Firefox 3中,此调用失败。 它适用于我测试的所有其他浏览器(OSX / Windows:Chrome,Safari,IE7。)

请求来自https站点并转到相同的https站点。 但我认为在此过程中某个地方原始请求以http开始,并且我们的服务器上有一个重定向尝试从http-> https发送它,Firefox拒绝重定向为某种类型的伪造。

有没有人有经验在.ajax()使用Firefox在https网站上调用JQuery? 我注意到一些奇怪的地方,如果请求在URL中有“ ?var=xxx ”参数,那么请求似乎更频繁地工作,如果它没有那些变量。

听起来你收到HTTP 411错误。 。 如果您发送的POST请求没有任何data则会发生此错误。

要解决此问题,请将空对象( {} )添加到请求的data属性中:

 $.ajax({ url: url, type: 'POST', data: {}, // <- set empty data success: function(data, textStatus) { // do something } }); 

这似乎不太可能……不是我怀疑你。 但我建议下载Wireshark并观察您的HTTP流量,看看是否无法隔离问题。 您将能够将其他浏览器发送的请求与FF3发出的请求进行比较,并查看返回的响应类型。 如果确实是jQuery在FF3中无法正常运行的问题,您可能可以更改某些代码以使其正常工作。

您可以安装Firefox Live Headers扩展,以便访问您的请求/响应中的所有信息。 这样你就可以发现任何差异。

您的Firefox上是否安装了任何插件或GreaseMonkey脚本?

我从未遇到过关于HTTPS的jQuery AJAX请求的问题。 如果你还没有,我建议看看Firebug会出现什么。

我通过发送一个空对象作为data参数,让$.post在Firefox中工作。 注意参数2的空括号:

 $.post(url, {}, function(response){ alert('done'); }, "json");