我有一个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托管在不同的域中。
当我想测试做一个post时,我输入下面的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之外的所有浏览器上运行。
对此有什么解决方案吗?会很感激的。
发布于 2014-02-28 19:35:15
您可以将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
希望上面的链接能有所帮助。
发布于 2014-02-28 20:23:17
您的错误消息是否提到了有关跨域策略的内容?我遇到了类似的问题,并得到了那个消息。
尝试在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>您可能希望将*更改为另一个更具限制性的值。但你可以从那里开始工作,如果它有效的话
https://stackoverflow.com/questions/22093121
复制相似问题