通过AJAX POST调用方法WCF CORS无法从localhost工作到其他域

时间:2014-09-01 08:19:37

标签: ajax json wcf post

我有实施CORS的WCF服务。我在WCF中通过localhost:59258方法调用AJAX POST。如果我在其他PORT上通过localhost调用此方法 - 它正在工作。如果我使用相同的方法调用相同的WCF但是另一个URL我得到400 Bad Reqest,请参阅下面的内容。我试图通过Fiddler调用方法并且它正在工作。哪里可能有问题?

第一个例子 - 在AJAX和Fiddler中工作

使用CORS侦听http://localhost:8733/json/GetId的WCF 我来自http://localhost:59258方法GetId

第二个例子 - 在AJAX中不工作,在Fiddler中工作

使用CORS侦听http://some.domain:8733/json/GetId的WCF 我来自http://localhost:59258方法GetId

以下是WCF界面的一部分:

[OperationContract]
    [WebInvoke(Method = "*",
        UriTemplate = "GetId",
        BodyStyle = WebMessageBodyStyle.WrappedRequest,
        RequestFormat = WebMessageFormat.Json,
        ResponseFormat = WebMessageFormat.Json)]
    string GetId(string a);

这是AJAX的一部分:

var request = $.ajax({
type: "POST",
url: "http://some.domain:15010/json/GetId",
data: JSON.stringify( {     a: "123" }),
error: function (e) {
    alert(e.responseText);
},
datatype: "json",
contentType: " text/json; charset=utf-8"

});

fiddler的日志 - 没有工作的例子: enter image description here

1 个答案:

答案 0 :(得分:0)

几天后我找到了解决方案。 问题出在WCF服务上。我试图在互联网上使用很多解决方案。许多解决方案涉及在IIS上托管的WCF。只有一个自我托管WCF与CORS 的解决方案正在运行:link