通过AJAX POST调用方法WCF CORS无法从本地主机运行到其他域
我有WCF服务和实施的CORS。我通过AJAX POST从WCF中的localhost:59258方法调用。如果我在另一个端口上通过localhost调用这个方法,它就会工作。如果我调用相同的方法,使用相同的WCF,但另一个URL,我得到400个错误的请求,请参见下面的内容。我试着用Fiddler调用这个方法,它正在工作。哪里会有问题 第一个示例-在AJAX和Fiddler中工作 WCF,CORS监听通过AJAX POST调用方法WCF CORS无法从本地主机运行到其他域,ajax,json,wcf,post,Ajax,Json,Wcf,Post,我有WCF服务和实施的CORS。我通过AJAX POST从WCF中的localhost:59258方法调用。如果我在另一个端口上通过localhost调用这个方法,它就会工作。如果我调用相同的方法,使用相同的WCF,但另一个URL,我得到400个错误的请求,请参见下面的内容。我试着用Fiddler调用这个方法,它正在工作。哪里会有问题 第一个示例-在AJAX和Fiddler中工作 WCF,CORS监听http://localhost:8733/json/GetId 我从http://localh
http://localhost:8733/json/GetId
我从http://localhost:59258
方法GetId
第二个示例-在AJAX中不工作,在Fiddler中工作
WCF,CORS监听http://some.domain:8733/json/GetId
我从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日志-未工作示例:
几天后,我找到了解决办法。 问题出在WCF服务上。我尝试在互联网上使用很多解决方案。许多解决方案都与托管在IIS上的WCF有关。对于使用CORS的自托管WCF,只有一个有效的解决方案是: