我的POST功能存在跨域问题

时间:2014-02-28 10:54:31

标签: ajax json api rest cross-domain

我有一个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旁边的所有浏览器..

这有什么解决方案吗?非常感激。

2 个答案:

答案 0 :(得分:0)

答案 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>

您可能希望将*更改为另一个更具限制性的值。但你可以从那里开始工作,如果有效的话