在Angular中连接到TFS Api,401未授权
问题描述:
我在我的第一个Angular应用程序中遇到API获取请求的问题。我试图从服务器获取所有项目,我已经获得了正确的URL(它在邮递员中工作,即使在我的浏览器中),我也从TFS上的帐户生成了一个令牌,但是,我仍然得到当我运行应用程序时,401在控制台中未经授权。任何帮助将会得到赞扬。我需要提供Windows身份验证吗? Angular甚至有可能吗?在Angular中连接到TFS Api,401未授权
这是我试图运行的方法。所有导入都在那里,并且方法从OnInit调用。
getProjects(): void {
const authHeader = new HttpHeaders();
authHeader.append('Authorization', 'Bearer ' +
`perfectly valid token here`);
this.http.get('perfectly valid server url here/_apis/projects?api-
version=1.0', {headers: authHeader}).subscribe(data => {
this.results = data['results'];
});
}
答
我有这个工作使用基本认证。
getProjects(): void {
const authHeader = new HttpHeaders();
authHeader.append('Authorization', 'Basic ' +
base64('Username:Password'));
this.http.get('perfectly valid server url here/_apis/projects?api-
version=1.0', {headers: authHeader}).subscribe(data => {
this.results = data['results'];
});
}
答
您可以尝试提供Windows身份验证,它在Angular上可用。在项目中启用CORS。
然后检查以下Cross-origin resource sharing (CORS)例如添加授权在您的代码:
$(document).ready(function() {
$.ajax({
url: 'https://fabrikam.visualstudio.com/defaultcollection/_apis/projects?api-version=1.0',
dataType: 'json',
headers: {
'Authorization': 'Basic ' + btoa("" + ":" + myPatToken)
}
}).done(function(results) {
console.log(results.value[0].id + " " + results.value[0].name);
});
});
您可以参考以下文章来进一步排除故障:
尝试编码它与BASE64搭配btoa()但仍然无法正常工作。 – Nech
你如何生成令牌? –