我有一个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,它完美无缺!
但是当我尝试在不同的域上使用它时,可以说域-3,它就会失败。
我尝试过CORS,它适用于IE9旁边的所有浏览器..
这有什么解决方案吗?非常感激。
答案 0 :(得分:0)
您可以配置Apache以接受跨站点。
以下链接提供了其他解决方案。
Breaking the cross domain barrier
Cross Domain AJAX Request with YQL and jQuery
Cross-domain requests with jQuery
Simple cross domain html request with jquery
jQuery ajax, get html cross domain
JavaScript: Use a Web Proxy for Cross-Domain XMLHttpRequest Calls
希望以上链接可能有所帮助。
答案 1 :(得分:-1)
您的错误消息是否提及有关跨域策略的内容? 我有类似的问题,并得到了这个消息。
尝试在您的webservice文件夹上创建一个文件crossdomain.xml,其中包括以下内容:
<?xml version="1.0"?>
<\!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<allow-access-from domain="*" />
<allow-http-request-headers-from domain="*" headers="*"/>
</cross-domain-policy>
您可能希望将*更改为另一个更具限制性的值。但你可以从那里开始工作,如果有效的话