使用 CORS 从 TeamCity API 获取 JSON

Posted

技术标签:

【中文标题】使用 CORS 从 TeamCity API 获取 JSON【英文标题】:Getting JSON from TeamCity API with CORS 【发布时间】:2014-04-07 23:19:24 【问题描述】:

我正在尝试使用 TeamCity API 以 JSON 格式检索构建数据以实时显示。

显示是一个简单的 javascript 应用程序,作为与 TeamCity 服务器不同域的网页提供。因此,这必须作为跨源请求 (CORS) 处理。

我的问题是我找不到配置 jQuery ajax 请求来处理 CORS 并要求 TeamCity 返回 JSON 响应(而不是 XML 响应)的方法。

我在我的 ajax 对象中尝试了各种设置组合,最后一个版本如下:

    return $.ajax(
       url: url,
       dataType: "jsonp",
       /*accepts: "application/json",*/
       type: "GET",
       xhrFields: 
           withCredentials:true
       ,
       beforeSend: function(xhrObj)
           xhrObj.setRequestHeader("Accept","application/json");
        
     );

“url”包括 TeamCity 的登录凭据,以满足 Http 身份验证。

我得到的响应是我想要的数据,但采用 XML 格式(以下请求和响应标头的详细信息)。

所以我的问题是如何配置 ajax 请求以从 TeamCity 获取 JSON?

Request URL:https://xxxxx/**httpAuth/app/rest/projects**?    
callback=jQuery210040475526987574995_1394042043670&_=1394042043671
Request Method:GET
Status Code:200 OK
Request Headersview source
Accept:*/*
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Connection:keep-alive
Cookie:__test=1; TCSESSIONID=F409E3C78BD3649E4DCA846DF5DD97F2;           
RememberMe=-116716355^12#-8135087298707329913
Host:builds.quillpinpoint.co.uk
Referer:http://localhost/orqaadmin/BuildMonitor/Index
User-Agent:Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (Khtml, like Gecko) 
Chrome/33.0.1750.146 Safari/537.36
Query String Parametersview sourceview URL encoded
callback:jQuery210040475526987574995_1394042043670
_:1394042043671
Response Headersview source
Cache-Control:no-store
Content-Length:1009
Content-Type:application/xml
Date:Wed, 05 Mar 2014 17:55:41 GMT
Expires:Thu, 01 Jan 1970 00:00:00 GMT
Pragma:no-cache
Server:Microsoft-IIS/7.5
Set-Cookie:RememberMe=-xxxx
X-Powered-By:ARR/2.5
X-Powered-By:ASP.NET

【问题讨论】:

【参考方案1】:

在 TeamCity 服务器上,登录、管理、服务器管理、诊断、内部属性、编辑内部属性并添加:

rest.cors.origins=*

这将添加所有网站。您可以添加逗号分隔的网站列表。

v8 https://confluence.jetbrains.com/display/TCD8/REST+API#RESTAPI-CORSSupport

v9 https://confluence.jetbrains.com/display/TCD9/REST+API#RESTAPI-CORSSupport

【讨论】:

以上是关于使用 CORS 从 TeamCity API 获取 JSON的主要内容,如果未能解决你的问题,请参考以下文章

从 React 前端的 Zoho API 获取数据时出现 CORS 错误

从 API CORS 获取数据

CORS 策略已阻止从源“http://localhost:3000”访问“http://localhost:8000/api/puppies”获取

为啥使用 axios 从 XML 中获取数据会引发 cors 错误? [复制]

从自己的域中获取 api 时出现 CORS 错误

从外部api获取数据时反应应用程序中的Cors错误[重复]