English 中文(简体)
AJAX使用jquery进行https POST请求在Firefox中失败
原标题:
  • 时间:2009-02-27 23:25:16
  •  标签:

我有一个简单的记录列表,以HTML表格的形式显示,每一行都有一个删除链接。这个删除链接会发出一个AJAX post请求到一个固定的URL,它看起来像这样:/delete/record/5

AJAX请求是使用jquery的.ajax()函数创建的,当在使用https的服务器上运行时,使用POST消息。在OSX / Windows架构的Firefox 3上,此调用会失败。在我测试过的所有其他浏览器上都可以使用(OSX / Windows:Chrome,Safari,IE7)。

请求来自https网站并发送到相同的https网站。但是我认为在此过程中,原始请求在开始时可能是http,并且我们的服务器会尝试将其从http重定向到https,但Firefox会拒绝该重定向,称其为某种类型的伪造。

有没有人在Firefox上使用https网站进行.ajax() JQuery调用的经验?我注意到一些奇怪的地方,在URL中如果请求带有"? var = xxx "参数,请求似乎更经常工作,而如果它没有这些变量,则情况不同。

最佳回答

听起来你在遇到HTTP 411错误。如果你发送的是没有任何数据的POST请求,就会发生这种错误。

要解决这个问题,请将一个空对象( {} )添加到请求的 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");




相关问题