好的,我已经阅读了有关我主题的多篇文章,但似乎没有任何帮助。我试图在这篇文章中here完成同样的事情。 我在一个有角度的http get请求中使用了答案(https:// {yourserver} /defaultcollection/_apis/git/repositories?api-version=1.0)中所述的示例,但我收到401错误说明了凭据我提供的无效。
然后我下载了curl并提供了以下命令" curl -u username:password http:// {myserver} /defaultcollection/_apis/git/repositories?api-version=1.0"结果回来了,html说我没有有效的凭据。有人可以指出我正确的方向,所以我可以拉项目根分支和儿童的分支和数据吗?
基本上我正在寻找一种从服务器提取数据并在我的网络应用程序上显示它的方法。我需要每个分支和子分支的分支名称和历史记录。
更新
所以我现在可以使用Richard推荐的--ntlm开关进入此服务。现在实际上让我的应用程序连接到服务我发现我可以使用以下方式传递Windows凭据:
withCredentials:true
它不再给我401错误。相反,我没有收到新的错误说明:
XMLHttpRequest cannot load http://{servername}/{defaultcollection}/_apis/projects?api-version=1.0. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8080' is therefore not allowed access.
我的下一步工作是什么?
解决方案
我接受了理查德建议并创建了我自己的asp.net web api来与tfs进行通信。我能够修改web.config文件以允许CORS。我将以下行添加到文件的system.webServer部分。
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
</customHeaders>
</httpProtocol>
执行此操作已解决了我收到的错误消息,并且创建一个简单的api来获取特定信息并不是很难。感谢您的帮助。
答案 0 :(得分:4)
在你的curl命令中添加--ntlm
作为选项。
命令应如下:
curl -u username:password --ntlm http://{myserver}/defaultcollection/_apis/git/repositories?api-version=1.0
请注意,API目前不支持CORS。这意味着您可以从您自己的服务器端代码进行API调用而不会出现问题,但您无法直接从浏览器进行调用。有UserVoice suggestion启用此功能,您可以投票。