当我尝试通过TFS扩展调用Teamcity REST服务时遇到问题。
我还配置了TeamCity: rest.cors.origins =“ http://my.tfsserver” rest.cors.optionsRequest.allowUnauthorized = true
在TFS扩展名中,我调用以下网址: http://my.teamcity.server:80/app/rest/latest/projects使用“ XMLHttpRequest”
const pair :string=this.settings.username+":"+this.settings.password;
const encodedCreds:string = btoa(pair);
const basicAuthValue:string = "Basic "+ encodedCreds;
const apiurl:string="/app/rest/latest/projects";
const completeUrl:string = this.settings.urlTeamCity+apiurl;
const xhr = new XMLHttpRequest();
xhr.open("GET",completeUrl,true);
xhr.setRequestHeader('Authorization', basicAuthValue);
xhr.setRequestHeader("Access-Control-Allow-Origin" ,"http://my.tfsserver");
xhr.onload=function(){
console.log(xhr.responseText);
}
xhr.onerror=function(){
console.log(xhr.response);
}
xhr.send();
我在控制台中遇到以下错误:
无法加载http://my.teamcity.server:80/app/rest/latest/projects: 飞行前响应无效(重定向)
在TeamCity休息日志中,我有以下两行:
[2018-10-01 14:12:49,891]调试[p-nio-80-exec-9]- er.rest.APIController / rest-api-从来源'null'获得了CORS请求, 但不允许此来源。将原点添加到“ rest.cors.origins” 内部属性(以逗号分隔)以信任托管的应用程序 在域上。当前允许的来源是:启用的CORS来源: [http://my.tfsserver]
[2018-10-01 14:12:49,892]调试[p-nio-80-exec-9]- er.rest.APIController / rest-api-REST API请求处理完成 在1毫秒内,状态代码:302,请求:OPTIONS '/ app / rest / latest / projects',来自客户端10.69.152.71:59256,无身份验证
根据最后一行,我将代码修改为:
...
xhr.open("GET",completeUrl,true,this.settings.username,this.settings.password)
xhr.withCredentials=true;
...
但是,我在chrome控制台和Team City Rest日志中仍然遇到相同的错误。
在chrome控制台的“网络”标签上,我可以看到“来源”标头为空,但我不明白为什么?
非常感谢您的帮助:)