【发布时间】:2017-06-10 11:04:11
【问题描述】:
我们正在使用 TeamCity 10.0.2 来构建/测试/等我们当前的项目。我们目前正在尝试使用 TeamCity 的内置 REST API 来访问有关构建的信息。为了运行这些 REST 调用,我们使用 Angular 1.5 的 http 库来执行 GET 请求。
但是,在运行 GET 请求时,我们收到错误消息“请求的资源上不存在 'Access-Control-Allow-Origin' 标头。因此不允许访问 Origin 'null'。”
我在网上找到的是添加
rest.cors.optionsRequest.allowUnauthorized=true
rest.cors.origins=*
到我们在 TeamCity 中的内部属性。我们这样做了,但仍然收到错误。请注意,如果我们仅使用浏览器或使用 Postman 访问相同的 URL,它就可以工作;使用
从 Angular 运行请求时会出现问题$http.get(teamCityUrl, {headers:{"Authorization": "token"}});
有什么想法吗?
【问题讨论】:
-
当您进行 HTTP 调用时,您是否看到 Access-Control-Allow-Origin 标头?它在邮递员中工作的原因是浏览器出于安全原因需要CORS标头,而邮递员没有限制
-
还有一些浏览器会拒绝该标头中的 *,因此请尝试仅设置托管 Angular 应用程序的域
-
不,我没有看到响应的标题。话虽这么说,当我只使用浏览器(不是角度)发出请求时,它可以工作,但我仍然看不到响应。在设置域方面,TeamCity 是服务器,我无法控制其 API 及其响应内容。
-
ok 那么你需要检查teamcity的配置。您可能想阅读 CORS,您可以直接从浏览器中点击它,因为它不是 AJAX 调用。 CORS 策略适用于 AJAX 请求,基本上它会根据您尝试访问的域检查页面加载的域。