Firefox不支持withCredentials属性

时间:2012-09-18 07:35:28

标签: html5 firefox jquery

我正在使用HTML5,jQuery 1.6.1,jQuery Mobile 1.0.1。

我使用下面的代码来发出Ajax请求。它在Chrome中工作正常但我在Firefox 14.0.1中测试时遇到了以下错误。

  

窗口上下文中的同步模式不再支持使用XMLHttpRequest的withCredentials属性。

代码:

$.ajax({
   type: "GET",
   dataType: "json",        
   async: false,
   beforeSend: function (xhr){          
        xhr.setRequestHeader('Authorization', make_base_auth(UserId, Password)); 
  },
  xhrFields: {
      withCredentials: true
  },
   success:function(data){                  
   console.log("Success");          
 },
 error:function(xhr,err){
    console.log("Failed" );
 }          
});

请帮我解决这个问题。

2 个答案:

答案 0 :(得分:17)

解决方案很简单:请勿在{{1​​}}中使用async: false

它在较新版本中已弃用,您不需要它。使用它总是一个坏主意。使用成功回调的结果执行您需要做的事情(就像您的$.ajax)。

来自the documentation(1.8):

  

请注意,同步请求可能会暂时锁定浏览器,   在请求处于活动状态时禁用任何操作。从jQuery 1.8开始,   不推荐使用async:false和jqXHR($ .Deferred);您   必须使用完整/成功/错误回调。

答案 1 :(得分:0)

我已经在几个地方看过这个帖子,所以会更新这个答案: 我尝试使用许多不同的帖子和其他属性将异步调整为true,但这是导致页面刷新的表单提交的默认操作:

                    submitSuggestion: function (e) {
                        e.preventDefault();
                        submitComment(viewModel);
                    },
                });

e.preventDefault()阻止了正常的提交行为,即重新加载页面。该行为会生成xml重定向错误,因为默认表单提交使用了该函数。

如果你没有得到你没有要求的刷新,请尝试添加preventDefault!