我正在尝试对statuspage 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的,但如果有人能向我解释我将如何利用这种支持,我将非常感激。
发布于 2013-11-14 01:14:58
您可能会遇到跨域策略错误。您请求的资源必须有一个" access -Control-Allow-Origin“头,允许您通过ajax访问它。
此外,根据Mozilla的说法(参见“带证书的请求”),除非头部中存在Access-Control-Allow-Credentials: true,否则“带证书的”ajax调用将失败,当我试图在Chrome的开发人员工具中发出请求时,我看不到这一点。
在上发布新信息后的更新
由于文档中没有提到ajax,但提到了cURL,我认为您别无选择,只能在后端实现它。幸运的是,这并不困难。
在后端实现发出cURL调用的功能,并让它简单地打印响应。然后,您仍然可以在前端使用ajax,但不是调用外部URL,而是调用这个新的后端特性。
cURL在大多数语言中都有现成的版本。Here is an example in the PHP documentation。
https://stackoverflow.com/questions/19958737
复制相似问题