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

时间:2009-02-27 23:25:16

标签: jquery ajax firefox firefox-3

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

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

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

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

5 个答案:

答案 0 :(得分:13)

Sounds like you're getting an HTTP 411 error.。如果您在没有POST的情况下发送data请求,则会发生此错误。

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

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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

答案 3 :(得分:0)

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

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

答案 4 :(得分:0)

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

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