我正在从y.x.com向x.com发出ajax请求,除了IE 8和9之外,我在大多数浏览器中都能正常工作,在那里我会收到拒绝访问错误。这是我的代码
if (!empty && radio_checked) {
$(".modal-content").animate({
height: "250px"
}), 500, function () { };
$.support.cors = true;
var url = "localhost:5603/ajax/post/sell-exm/?" //localhost for testing locally
if ($.browser.msie && window.XDomainRequest) {
var xdr = new XDomainRequest();
xdr.open("post", url+data); // *** ERROR HERE ***
xdr.send(data);
} else {
$.ajax({
type: "POST",
url: url,
data: data,
datatype: "jsonp",
success: function(r){
//nothing needed here
}
});
}
}
同样,这适用于除IE8&9.此外,我在web.config上有一个Access Control Allow Origin自定义标头。
我不太确定XDR是否就是这样工作的,但出于某种原因,它在我的服务器上是这样工作的。但它看起来像是"打开"触发了来自.Net后端的ajax响应,并阻止了发送通过(这听起来不对,但在Fiddler中就是这样)。因此,没有发布任何表单数据,这导致了所有奇怪的事情的发生。
为了解决这个问题,我将post改为get,并在我的.Net Ajax控制器中添加了一个子句,它说if Request.Form.AllKeys.Length = 0
,获取查询字符串。