使用Jquery WCF REST入门套件预览2进行跨域Ajax调用的问题

时间:2010-09-17 10:05:48

标签: jquery wcf rest

我使用WCF REST入门套件preview2创建并托管了我的WCF REST API。它支持动态响应和请求格式类型(XML和JSON)。如果我通过Jquery,Microsoft.Http在同一域中使用该服务,那么一切正常。

我的cs代码如下:

private void GetData()
    {
        string url = string.Format("http://myhost/Services/UserService.svc/people/");
        HttpClient client = new HttpClient();
        HttpResponseMessage responseMessage = client.Get(url);
        responseMessage.EnsureStatusIsSuccessful();
        using (responseMessage)
        {
            string res = responseMessage.Content.ReadAsString();
            Response.Write(res);
        }
    }

现在当我尝试使用来自另一个域的Jquery来使用我的服务时响应是在IE8中进行但是在Mozilla和Chrome中我得到了null响应 我的jquery代码如下:

 function loadData() {
    var path = "http://myhost/Services/UserService.svc/people/";       
    $.ajax({
        type: "GET",
        url: path,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        async: false,
        success: function(response) {               
            if (response != null) {
                displayData(response);                   
            }
        }
    });
}

我也尝试设置数据类型:“jsonp”和.getJson()方法调用。

1 个答案:

答案 0 :(得分:0)

您还可以在当前域上使用ProxyHandler。从您的客户端代码,调用代理处理程序(相同的域),然后可以调用REST服务(跨域)。

如果您需要一个起点,请查看有关创建HtppHandler(代理)的这些文章。

How To Create an ASP.NET HTTP Handler by Using Visual C# .NET

A Boilerplate HttpHandler - Scott Hanselman