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 标头
CORS 请求在 Firefox 中中止,而不是在 Chrome 或 IE 中