当WebService托管在Azure云上时,Jquery AJAX调用失败

时间:2012-11-21 18:17:48

标签: javascript ajax jquery azure

我正在尝试调用托管在我的localhost上的Web服务。这个AJAX调用对我有用,我可以看到在请求的标头中发送“授权”令牌给服务。

    $.ajax({
        type: method,
        url: serviceUrl,
        beforeSend: function (XMLHttpRequest) { XMLHttpRequest.setRequestHeader("Authorization",  Token); },
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        ProcessData: true,
        cache: false,
        success: successHandler,
        error: errorHandler
    });

但是这次我尝试调用Azure云托管的服务并且相同的AJAX调用有效,但是它不发送标题内容。我正在使用fiddler来检查请求的标头内容。有什么我可以做的,以便标题具有“授权”令牌?

2 个答案:

答案 0 :(得分:2)

可能是跨域政策限制。你必须确保ajax调用和服务在同一个域内,否则你将不得不做一些黑客攻击才能使它工作。

答案 1 :(得分:0)

security policies at the browser level来阻止跨域AJAX调用。有多种解决方法(such as using XML instead of JSONthis jQuery plugin),但最“正确”的似乎是using JSONP instead of JSON,我认为只需更改dataType即可在你的AJAX电话中:

$.ajax({
    //...etc.
    dataType: "jsonp",
    //...etc.
});

如果这不是问题,请尝试将return true;添加到beforeSend处理程序。 The request gets canceled if that returns false,但我不知道如果它根本没有返回值会发生什么。