1

我正在尝试从给定的ajax调用中调用webservice方法。我的 Web 服务托管在同一个应用程序中。

$.ajax({
    type: "POST",
    url: "http://1.1.1.1/demo/sblead.asmx/SBLeadsSave",
    data: "{'whenNeeded':'" + whenNeeded + "','howLong': '" + howLong + "','size': '" + Size + "','customerName': '" + name + "','mobile': '" + mobile + "','email': '" + email + "','comments': '" + comments + "','nextContract': '','unitLocation': '" + unitLocation + "'}",
    contentType: "application/json; charset=utf-8",

    dataType: "jsonp",
    callback: '?',
    crossDomain: true,

    success: function (response) {
        // debugger;
        var res = response.d;
        if (res == "True") {
            location.href = "http://1.1.1.1/SBleadSuccess.htm";
        } else {
            alert('Data Saving failed please try again');
        }
    },
    failure: function (result) {
        alert(result.status + ' ' + result.statusText);
    },
    beforeSend: setHeader

Web 服务方法没有被调用,当我使用 Chrome 开发人员工具看到它时 --> 网络我可以看到响应为 Origin http://www.example.com是 Access-Control-Allow-Origin 不允许的。

它在测试服务器中工作,但不在生产服务器中。

我怎样才能解决这个问题?

4

2 回答 2

2

您需要在响应标头中允许您的生产服务器:

Access-Control-Allow-Origin: <production origin> | *

您可以在 MDN 上查看更多信息:HTTP 访问控制 (CORS)

于 2012-09-27T13:10:04.410 回答
0

这是因为您正在调用http://1.1.1.1/demo/sblead.asmx/SBLeadsSave,但这不是您的生产服务器位置。

放置您的生产服务器位置,或者只是/demo/sblead.asmx/SBLeadsSave.

于 2012-09-27T13:10:51.707 回答