我正在编写一个角度应用,通过$ 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).
有什么想法吗?
答案 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发出请求,并将响应转发回我的角应用程序。