【发布时间】:2014-04-01 08:02:05
【问题描述】:
我有一个 MVC REST Web API,它的方法如下所示:
public HttpResponseMessage PostBook(DtoBooks Book)
{
if (Book == null)
{
return Request.CreateResponse(HttpStatusCode.BadRequest);
}
Book.Id = Guid.Empty;
BookManager.Instance.Add(Book);
var response = Request.CreateResponse(HttpStatusCode.Created, Book);
return response;
}
它使用 IIS 托管在不同的域中。
当我想测试做一个帖子时,我输入以下 js:
jQuery.ajax({
type: "POST",
url: "http://domain-2:9090/api/Values/",
dataType: "json",
data: { CallToActionUrl: 'http://domain-2/', Message: 'Hello World!', OpenInModal: false, Status: 0, TargetUser: 'domain2\admin', TimeStamp: '2014-02-28', Type: 0 },
success: function (data) {
alert("success")
},
error: function (data) {
alert("Fail")
}
});
当我导航到http://domain-2:8080/ 时,我可以运行这个 ajax 并且它运行良好!
但是当我尝试在不同的域上使用它时,比如说 domain-3,它会失败。
我试过CORS,它适用于IE9以外的所有浏览器..
有什么解决办法吗?非常感谢。
【问题讨论】:
-
如果您尝试在 IE9 中进行跨域 ajax 请求,您需要使用
XDomainRequest而不是XMLHttpRequest。有一个包装 XDR 的 jQuery 插件。您应该知道 XDR 有一些明显的限制。另一种选择是使用这样的库:github.com/jpillora/xdomain.
标签: ajax json api rest cross-domain