微软的有人终于给了我解决方案,所以这里是:
在 PowerShell 中,运行以下命令:
[Reflection.Assembly]::LoadFrom("C:\Program Files\Microsoft Team Foundation Server 14.0\Tools\Microsoft.TeamFoundation.Client.dll")
$configServer = new-object Microsoft.TeamFoundation.Client.TfsConfigurationServer "http://localhost:8080/tfs/"
$configHive = $configServer.GetService([Microsoft.TeamFoundation.Framework.Client.ITeamFoundationRegistry])
$configHive.SetValue("/Configuration/WebSecurity/AllowedOrigins", "domain1;domain2")
因此,您可以指定多个域,也可以限制给定的端口和/或方案,如下所示:
$configHive.SetValue("/Configuration/WebSecurity/AllowedOrigins", "localhost,port=58785,scheme=http;")
这是一篇关于使用 Powershell 更新 TF 注册表 https://blogs.msdn.microsoft.com/chrisid/2010/05/24/updating-the-tf-registry-using-powershell/
然后您终于可以向 API 发送经过身份验证的 AJAX 请求。
[EDIT]:此时,如果您在 Windows 中运行它,它可能可以工作,但它不使用基本身份验证。
两种选择:
1.它用Generic Credentials
自动添加到Credential Manager
(抱歉,这是法语)
2.或者它也可以使用您的Windows session credentials
.
因此,要使其在非 Windows 环境中运行,您还需要执行一些步骤。
在 TFS 服务器上,运行以下 PowerShell 命令以添加基本身份验证功能:
dism /online /enable-feature /featurename:IIS-BasicAuthentication
然后在 IIS 管理器中单击 TFS 站点节点上的“身份验证”。您现在应该看到基本身份验证,只需启用它即可。
最后在 JavaScript 代码中转换字符串
域名\用户名:密码
Base64 并将其添加到请求的标头(假设您使用 XMLHttpRequest):
client.setRequestHeader('Authorization', 'Basic ' + myBase64AuthString);
注意:请小心您可以在互联网上找到的纯 JavaScript Base64 转换器。由于编码原因,转换后的字符串可能是错误的。将您的字符串与一些在线 Base64 转换器进行比较以确定。
希望这会帮助其他人。