我在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
”参数,那么请求似乎更频繁地工作,如果它没有那些变量。
答案 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");