FireFox 不发送 CORS 请求(使用 jQuery)

Posted

技术标签:

【中文标题】FireFox 不发送 CORS 请求(使用 jQuery)【英文标题】:FireFox Not Sending CORS Request (using jQuery) 【发布时间】:2013-04-08 01:44:47 【问题描述】:

我正在尝试发出多个 CORS 请求(PUT、GET、POST)。这些请求在 Chrome 和 Safari 中运行良好。选项被拒绝,但其他请求通过。

以下是我的搜索功能。 Chrome 和 Safari 使用返回的数据调用回调:

function Search (q, fn,)
console.log(q)
$.ajax(
    url: sumeURL+q,
    dataType: 'json',
    headers: headers
).done(function(data)
    fn(data);
);

FireFox 正在记录查询字符串,所以我知道它正在读取 AJAX 调用(我删除了我之前的问题,因为我认为 FireFox 在到达 AJAX 之前可能在某些东西上窒息 - 它没有)。

我正在使用 FireBug,Net 选项卡没有显示来自此搜索功能的 GET 请求的选项。

我看过这个SO question,但我需要为生产而不是开发做这个,所以浏览器插件不是一个好的选择。

什么条件会导致 FireFox 拒绝发送请求,但对 Chrome 或 Safari 没有影响?

如果您需要我从服务器发布访问控制数据,LMK。

【问题讨论】:

您使用的是哪个版本的 Firefox?你能重现test-cors.org上的错误吗? 不,我无法真正设置它,因为 Access-Control-Allow-Origin 仅允许来自某些域(包括我提出请求的域)。我在 FF 20.0 根据我的经验,FF 正在记录它不执行请求的原因。那么它在您的案例中记录了什么? 【参考方案1】:

您的答案可能在此回复中:Why does the preflight OPTIONS request of an authenticated CORS request work in Chrome but not Firefox?

如果飞行前请求响应是 401,Firefox 将停止发送请求,而 Webkit 浏览器将继续处理实际请求(GET、POST 等)

编辑:但话又说回来,您甚至没有看到正在发送的 OPTIONS 请求......不过,上面提到的帖子可能很有用。

【讨论】:

实际上 Chromium 的行为被记录为错误:groups.google.com/a/chromium.org/forum/?fromgroups=#!topic/… 这个线程说它不应该在拒绝 OPTIONS 后接受 GET 或 POST

以上是关于FireFox 不发送 CORS 请求(使用 jQuery)的主要内容,如果未能解决你的问题,请参考以下文章

CORS:成功 OPTIONS 请求后,Firefox 不发送 POST 请求……在 Chrome 中有效

来自 IE 或 Firefox 的 CORS 请求中没有 Referer 标头

带有 jQ​​uery.ajax() 的 CORS

CORS 请求在 Firefox 中中止,而不是在 Chrome 或 IE 中

即使服务器返回适当的响应标头,Firefox 也不允许 CORS 请求

CORS cookie 未在 Chrome 中发送