这里有什么问题让IE9可以做CORS Ajax调用,但IE8和FireFox不能?

我通过jQuery 向位于不同域WCF服务发出POST请求。 它按预期适用于IE9:

i)我发出请求, ii)登录对话框弹出窗口, iii)我登录并调用服务。

但是使用IE8和FireFox时不会出现LogIn对话框 ,请求失败。

问题 :为什么它在IE9上进行基于CORS的ajax POST调用没有任何问题,而IE8和Fire-Fox没有?

请参阅以下其他详细信息

  • 我有一个WCF RESTful服务,它位于IIS 7.5上的站点上
  • IIS上的身份validation设置为启用BASIC AUTHENTICATION
  • WCF服务安全模式在web.config中设置为:

   

  • 我的web.config也有:

        
  • 如何使用JavaScript进行调用:

$.support.cors = true; // I make CORS enabled

 request = { Foo: "Alice", Bar : "Sharma", }; $.ajax( { type: 'POST', url: "foo.bar.co/myService", contentType: 'application/json', data: JSON.stringify(request), success: function (result) { alert("Submitted succesfully!"); }, error: function (jqXHR, textStatus, errorThrown) { alert('Error Occured' + errorThrown); } } //eof ajax object ); //eof .ajax 

IE9如何表现 (如Fiddler2所说):

1. IE9使用以下请求标头发出请求(部分显示)

  • 推荐人 :clientInDifferentDomain.domain.co
  • 主持人 :foo.bar.co
  • 接受 :* / *

2.并且服务器通过反映Origin来响应HTTP 401(正如预期的那样):

  • WWW-Authenticate :Basic realm =“foo.bar.co”[ 在Cookies / Login下 ]
  • Access-Control-Allow-Headers :Origin,X-Requested-With,Content-Type,Accept
  • 访问控制允许方法 :POST,GET,PUT,DELETE,OPTIONS
  • Access-Control-Allow-Origin :*

3. IE9弹出一个登录窗口; 我输入我的凭据,我能够对位于不同域的WCF服务进行ajax POST请求! 大!

火狐的表现如何 (正如Fiddler2所说):

1. FireFox发出请求

  • 来源 :clientInDifferentDomain.domain.co
  • 主持人 :foo.bar.co
  • 接受 :text / html,application / xhtml + xml,application / xml; q = 0.9, / ; q = 0.8

2.并且服务器通过以下方式响应HTTP 401(正如预期的那样):

  • WWW-Authenticate :Basic realm =“foo.bar.co”[ 在Cookies / Login下 ]
  • Access-Control-Allow-Headers :Origin,X-Requested-With,Content-Type,Accept
  • 访问控制允许方法 :POST,GET,PUT,DELETE,OPTIONS
  • Access-Control-Allow-Origin :*