0

我有一个带有“BasicHttpbinding”绑定的 WCF 服务。我可以在 Internet Explorer 中使用 JQuery 优雅地调用该服务。但是相同的代码在 Chrome 或 FireFox 中不起作用。我可以理解来自 Chrome 或 FireFox 的 JQuery Ajax 调用存在跨域问题。我知道我可以使用 crossDomainScriptAccessEnabled="true" 公开“webHttpBinding”绑定并调用该服务。但是如果有一个scanario,我必须使用现有的“BasicHttp”绑定,那么解决方案是什么?我使用以下 JQuery 代码调用了 WCF 服务:

      $.ajax({
                  type: "POST",
                  url: "http://localhost:1415/MyService.svc/bh/",
                  data: bhRequest,
                  timeout: 10000,
                  contentType: "text/xml",
                  dataType: "xml",
                  beforeSend: function (xhr) {
                      xhr.setRequestHeader("SOAPAction", "http://tempuri.org/IMyService/GetData");
                  },
                  success: function (data) {
                      $(data).find("GetDataResponse").each(function () {
                          alert($(this).find("GetDataResult").text());
                      });
                  },
                  error: function (xhr, status, error) {
                      alert(error);

                  }
              });

我的 WCF 服务方法如下:

 [OperationContract]
 string GetData(int value);

有人可以为此提供任何解决方案吗?

4

1 回答 1

0

将 global.asax 添加到您的 WCF,然后添加:

protected void Application_BeginRequest(object sender, EventArgs e)
{
    HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin","*");
}
于 2013-01-28T17:44:26.273 回答