具有凭据的跨域请求在Firefox中不起作用

具有凭据的跨域请求在Firefox中不起作用,firefox,google-chrome,jquery,backbone.js,Firefox,Google Chrome,Jquery,Backbone.js,我正在构建一个Backbone.js应用程序,与我已经构建的api进行对话 api位于 api.foo.com 网站 web.foo.com Im设法让CORS在apache中使用适当的头字段 Header set Access-Control-Allow-Origin "http://web.foo.com" Header set Access-Control-Allow-Methods "GET,PUT,POST,DELETE,OPTIONS" Header set Access-Contr

我正在构建一个Backbone.js应用程序,与我已经构建的api进行对话

api位于 api.foo.com 网站 web.foo.com

Im设法让CORS在apache中使用适当的头字段

Header set Access-Control-Allow-Origin "http://web.foo.com"
Header set Access-Control-Allow-Methods "GET,PUT,POST,DELETE,OPTIONS"
Header set Access-Control-Allow-Headers Content-Type
Header set Access-Control-Allow-Credentials "true"
Header append Access-Control-Allow-Headers Origin
Header append Access-Control-Allow-Headers Accept
Header append Access-Control-Allow-Headers X-Requested-With
并将xhrFields设置为

    f = { withCredentials: true}

    params.xhrFields = f;

    // Make the request, allowing the user to override any Ajax options.
    $.ajax(params);
这一切都与铬。我将发布到api.foo.com/sessions login,获取一个cookie,然后使用该cookie向api.foo.com发出另一个请求

不幸的是,当我切换到firefox 10.0.7时,这不起作用。withCredentials似乎没有让jquery拿起cookie并使用它

与stackoverflow上与此相关的大多数问题不同,这不是一次性的,我需要让它在不同浏览器之间保持一致(我甚至还没有接触过IE)

我正在使用

Backbone.js 0.9.1 jquery 1.7.1 要求1.0.7 下划线1.3.1

致力于

铬17.0.963.65

在firefox 10.0.2上不起作用


有人能帮我吗?

我只是想用我最后做的事情来更新这个问题。我感觉CORS仍然不是一件容易的事情(出于良好的安全原因)。关于这个问题的大多数答案都归结为“代理或执行CORS”,而没有解释代理有多容易。下面是我需要在我的网站apache文件中输入的内容,以使所有内容都能正常运行

    ProxyPass /api http://api.foo.com/
    ProxyPassReverse /api http://api.foo.com/

<Location /api>
    Order allow,deny
    Allow from all
</Location>
ProxyPass/apihttp://api.foo.com/
ProxyPassReverse/apihttp://api.foo.com/
命令允许,拒绝
通融
这样做的目的是任何请求都发送到web.foo.com/api,apache代理会自动将其传递到api.foo.com。这意味着不需要任何CORS头,所有cookie都可以正常工作

这也意味着您仍然可以运行api.foo.com来运行其他非javascript的软件


这是解决CORS需求的一种非常简单的方法,同时仍然可以将内部api与前端分离。

基于上述情况,很难说到底发生了什么。。。有没有显示问题的链接?不幸的是,都是内部链接。我的印象是,跨浏览器CORS仍然不是一件容易的事情。现在我已经代理了我的apache实例,所以我不必担心它。这应该很容易做到。。。如果它在不同浏览器之间的工作方式不同,则一个或另一个浏览器已损坏。您是否愿意按照上的说明创建一个HTTP日志,并将其放在我可以阅读的地方?我在Chrome中遇到了与CORS类似的问题,但在Firefox中没有,并在此处进行了记录