2

我正在编写一个 Angular 应用程序,它通过 $http 服务向AppVeyor REST API发出 GET 请求,以获取我的项目的最后构建状态,但我收到了 CORS 错误。

当我从Fiddler尝试时,它可以工作。

var buildStatus= 'https://ci.appveyor.com/api/projects/accountName/projectSlug';
var token = 'q3245dsfg'; // my account api token

$http.get(buildStatus, {
    headers: {
        'Authorization': 'Bearer ' + token
    }
 }).then(...

这是我在 Firefox 上遇到的错误:

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://ci.appveyor.com/api/projects/accountName/projectSlug. (Reason: CORS request failed).

有任何想法吗?

4

2 回答 2

0

由于浏览器安全 CORS 限制,您的请求失败。

例如,您从域 xyz.com 加载的页面。出于安全原因,浏览器仅允许来自加载页面的 ajax 请求用于域 xyz.com。如果您的页面向域 ci.appveyor.com 发送 ajax 请求,则外部域必须以您的站点域(或通配符)作为值返回“Access-Control-Allow-Origin”标头。

据我了解,您无法更改远程服务器上的 CORS 标头,因此您具有其他功能 - 您可以使用服务器端代理:

1 - 您可以使用一些代理服务器(例如 nginx) 2 - 您可以从业务逻辑请求数据,并且您的逻辑可以从外部服务请求数据。

于 2016-02-09T22:06:29.117 回答
0

我正在从我的 Node.js 服务器向 AppVeyor 发出请求,并将响应转发回我的 Angular 应用程序。

于 2017-06-17T00:53:13.247 回答