我正在尝试对状态页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,但我非常感谢能够向我解释我将如何利用这种支持的任何人。
答案 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