1

我正在尝试对 statuspage API ( http://doers.statuspage.io/api/v1/ ) 进行 API 调用。我正在设置这样的授权标头:

$(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 的,但是我非常感谢任何可以向我解释我将如何利用这种支持的人。

4

1 回答 1

0

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

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

新信息发布后更新

由于文档没有提到 ajax,但确实提到了 cURL,我认为你别无选择,只能在后端实现它。幸运的是,这并不难。

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

cURL 在大多数语言中都很容易获得。这是 PHP 文档中的一个示例

于 2013-11-13T17:14:57.920 回答