使用jQuery或Javascript访问跨域WCF-Webservice



我很抱歉再次问这个问题,但我没有找到一个合适的答案来解决我的问题。

我尝试构建以下内容:我想连接到一个WCF-Webservice与一个标准的网页。网站和web服务都托管在同一台机器上的IIS中。

我启用了跨域访问web.config:

<webHttpBinding>
    <binding name="webHttpBindingWithJSONP" crossDomainScriptAccessEnabled="true" />
</webHttpBinding>

我的AJAX请求:

$.ajax({
    type: "POST",
    url: config.endpoints.db.production + "AddData/",
    data: JSON.stringify(data),
    contentType: "application/json",
    dataType: "json",
    crossDomain: true,
    //  processData: true,
    success: function(data, status, jqXHR) {
        //  alert("success..." + data);
        // loadingVisible(false);
        //  loadingFinished = true;

    },
    error: function(xhr) {
        alert("failure..." + xhr.responseText);
        //    loadingFinished = true;
        //    loadingVisible(false);
    }
});

触发请求后,我得到了一个"访问被拒绝"-错误在visual studio从jquery。在网上搜索后,我发现这是一个非常常见的跨域问题,但我没有找到解决方案。我尝试在ajax请求中设置"crossDomain: true",尝试使用jsonp(它适用于我的get请求),但没有任何帮助。

有合适的方法来解决这个问题吗?我读到这个问题可以通过ajax身份验证来解决。这是正确的吗?我如何才能做到这一点?

要解决这个问题,请执行以下操作

创建全局。并添加以下内容以启用Ajax跨域POST

 public void Application_BeginRequest(object sender, EventArgs e)
        {
            HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "*");
            HttpContext.Current.Response.AddHeader("Access-Control-Allow-Methods", "GET, POST,OPTIONS");
            if ((HttpContext.Current.Request.HttpMethod == "OPTIONS"))
            {
                HttpContext.Current.Response.AddHeader("Access-Control-Allow-Headers", "Content-Type, Accept");
                HttpContext.Current.Response.AddHeader("Access-Control-Max-Age", "1728000");
                HttpContext.Current.Response.End();
            }
        }
    }

为您服务

[AspNetCompatibilityRequirements(RequirementsMode =
    AspNetCompatibilityRequirementsMode.Allowed)]
    public class YourserviceName : YourserviceNameInterface

相关内容

  • 没有找到相关文章

最新更新