我的 HTTP AJAX (javascript) 有什么问题

What is wrong with my HTTP over AJAX (javascript)

我的代码: var answer_array = [];

var req = new XMLHttpRequest();
req.onload = function() {
    answer_array = answer_array.concat(JSON.parse(this.responseText).results);

    console.log(answer_array);

}

req.open("GET", "https://api.comettracker.com/v1/gpsdata?fromdate=2015-10-13");
req.setRequestHeader("authorization", "Basic Base64 encoded credentials");
req.setRequestHeader("cache-control", "no-cache");
req.setRequestHeader("postman-token", "b94725ff-408b-c82e-a985-6c38feb380af");
req.send();

这是我控制台中的内容: scripts2.js:22 OPTIONS https://api.comettracker.com/v1/gpsdata?fromdate=2015-10-13(匿名函数)@scripts2.js:22 2015-10-21 12:41:09.059 index.html:1 XMLHttpRequest 无法加载 https://api.comettracker.com/v1/gpsdata?fromdate=2015-10-13。请求的资源上不存在 'Access-Control-Allow-Origin' header。因此不允许 Origin 'null' 访问。响应具有 HTTP 状态代码 405。

当我转到 Chrome 上的网络选项卡时,我看到了这个: gpsdata?fromdate=2015-10-13 选项 405 xhr scripts2.js:22 0 B 452 ms

此错误信息:

No 'Access-Control-Allow-Origin' header is present on the requested resource

表示您 运行 遇到了跨源权限问题,这意味着您正在尝试访问不允许从您的页面所在的域访问的站点。如果您的页面位于您的本地驱动器上,并且正在使用 file:// URL 访问,那么您可以做的第一件事就是将它放在实际的网络服务器上并在那里尝试,因为 file:// URLs 对它们有一些额外的限制。

如果这也不起作用,则问题是 api.comettracker.com 站点不允许从您的特定站点访问。

当我将您的代码放入 jsFiddle 并在那里尝试并查看网络跟踪时,我看到的是用于 pre-flight 跨源请求的 OPTIONS 方法被拒绝api.comettracker.com 告诉浏览器当前格式的跨源请求是不允许的。

如果您的自定义 headers 从请求中删除,我会收到一个不同的错误,因此我认为您的自定义 headers 有一些不正确的地方。由于我不知道那个特定的 API,没有您的访问凭据或不知道如何使用它们,我不知道对 headers 到底有什么建议,但我认为这就是开始的地方。