使用angular从appveyor rest api获取CORS错误

时间:2016-02-09 21:40:19

标签: angularjs cors appveyor

我正在编写一个角度应用,通过$ http服务向AppVeyor REST API发出GET请求以获取我的项目last build status,并且我收到了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).

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

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

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

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

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

答案 1 :(得分:0)

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