2017-08-03 29 views
0

我在我的第一个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']; 
    }); 
    } 
+0

尝试编码它与BASE64搭配btoa()但仍然无法正常工作。 – Nech

+0

你如何生成令牌? –

回答

0

我有这个工作使用基本认证。

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']; 
    }); 
    } 
0

您可以尝试提供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); 
    }); 
}); 

您可以参考以下文章来进一步排除故障: