通过jQuery进行API调用的问题

时间:2013-11-13 16:11:07

标签: jquery ajax api cors

我正在尝试对状态页API(http://doers.statuspage.io/api/v1/)进行API调用。 我正在设置Authorization标头:

$(function() {
    $.ajax({
        url: "https://api.statuspage.io/v1/pages/mypageidhere/incidents.json",
        type: "GET",
        beforeSend: function (xhr) {
            xhr.withCredentials = true;
            xhr.setRequestHeader("Authorization", "OAuth authidhere");
            xhr.setRequestHeader("foo", "bar");
        },
        dataType: "json"
    });
});

我注意到当我在Fiddler上查看请求时未设置标头。我觉得问题是因为跨源策略,因为我能够看到我为我做的任何本地调用设置的身份验证标头。

有人可以指导我为了成功拨打这个api电话需要做些什么。我听说过这些天浏览器如何支持CORS,但我非常感谢能够向我解释我将如何利用这种支持的任何人。

1 个答案:

答案 0 :(得分:0)

您可能遇到跨源策略错误。您请求的资源必须具有“Access-Control-Allow-Origin”标头,允许您通过ajax访问它。

此外,根据Mozilla(请参阅“带凭据的请求”),“凭证”ajax调用将失败,除非标题中存在Access-Control-Allow-Credentials: true,我在尝试时看不到在Chrome的开发者工具中提出请求。

发布新信息后更新

由于文档没有提到ajax,但确实提到了cURL,我认为你没有办法,只能在后端实现这一点。幸运的是,这并不难。

在后端实现功能以进行cURL调用,并让它只打印响应。然后你仍然可以在前端使用ajax,而不是调用外部URL,调用这个新的后端功能。

cURL在大多数语言中都很容易获得。 Here is an example in the PHP documentation