Chrome阻止了ajax请求

时间:2015-09-11 19:50:52

标签: javascript jquery ajax google-chrome

全部, 我有以下ajax请求在IE中工作正常(我知道对吗?)但是当我尝试在Chrome中使用相同的代码时,我收到以下错误:

  

XMLHttpRequest无法加载http://ahmwpsds01:1234/NASAService/GetNASAUser.asmx/GetUserByName。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许原点“http://ahmwpsds01”访问。响应的HTTP状态代码为500。

Ajax请求

function getNASAProfile(user) {
    var dfd = new $.Deferred(function () {
        $.support.cors = true;
        $.ajax({
            type: "POST",
            url: "http://ahmwpsds01:1234/NASAService/GetNASAUser.asmx/GetUserByName",
            data: "{userName: '" + UserProfile.Name + "'}",
            dataType: "json",
            contentType: "application/json; charset=utf-8",
            accept: "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
        })
        .done(function (data) {
            //alert('Call Succeeded');
            dfd.resolve(data.d);
        })
        .fail(function (jqXHR, textStatus, errorThrown) {
            alert('Call Failed\n\n' + jqXHR.statusText + "\n\n" + errorThrown + "\n\n" + textStatus);
        });
    });
    return dfd.promise();
}

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

编辑:没有注意到您要发布POST请求。您应该考虑为您的案例使用后端方法

您正在尝试访问其他服务器上的资源。出于安全原因,您不能通过简单的AJAX调用来执行此操作。

要解决问题,您可以使用JSONP。这样做的简单方法是将?callback=?添加到URL。此外,服务器响应必须包含在函数定义中。您可能希望使用YQL之类的代理将响应转换为JSONP。

有关此链接的更多信息: http://json-jsonp-tutorial.craic.com/index.html

相关问题