这里有什么问题让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 :*