使用 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 错误
CORS 策略已阻止从源“http://localhost:3000”访问“http://localhost:8000/api/puppies”获取