Visual Studio Team Services REST API 的 AJAX 跨域问题

2024-04-05

我正在尝试为 Visual Studio Team Services REST API 编写一个 JavaScript 客户端,该客户端将 AJAX 请求发送到我们自托管的 Team Foundation Server 2015,但我面临跨域问题。

API 需要凭据进行身份验证,但由于安全原因,浏览器阻止我的请求,因为参数Access-Control-Allow-Origin使用通配符设置*.

我尝试在 IIS 管理器的 HTTP 响应标头以及 TFS web.config 文件中添加此参数(实际上是相同的),但我收到一条错误消息,告诉我此参数有两个不同的值(例如:* and http://localhost:58785)并且应该只有一个。 我猜想这个值已经在库的代码中定义了,但我无法访问它,因为 TFS Web 服务已经在 IIS 上编译并运行。

我也尝试使用标记<location allowOverride="false">在 web.config 中,禁止配置覆盖,但在这种情况下 TFS 将不会启动。

已经有人问过这个问题了here https://social.msdn.microsoft.com/Forums/vstudio/en-US/2f808d18-058c-447e-b6a3-6686ca49629e/do-the-visual-studio-online-api-support-cors?forum=TFService并在上面发布了一张票用户之声 https://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/6589478-support-for-cors-in-the-visual-studio-online-rest但由于 API 的名称确实含糊不清(Visual StudioOnlineREST API),我不知道这家伙是否在网上谈论真正的Visual Studio,或者他的情况是否与我的相同(自托管TFS Server)。

我们已经在 C# 中实现了一些运行良好的功能,但现在我们确实需要实现一个 JavaScript 客户端。 编写一个 Web 服务并将其用作查询 API 的代理对我们来说真是一团糟,我们不想这样做。

令人遗憾的是,我们无法向 API 发送 AJAX 请求,因为我们无法更改配置。


微软的有人终于给了我解决方案,所以这里是:

在 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 转换器进行比较以确定。

希望这会帮助其他人。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Visual Studio Team Services REST API 的 AJAX 跨域问题 的相关文章

  • 为什么我收到此错误:“未捕获类型错误:无法读取未定义的属性“标题””?

    我正在尝试写一个ajax网络应用程序 我有一个函数应该请求一个json对象 然后使用它来重新 填充网站 这里是JavaScript有问题 第 8 16 行 window onload LoadData Home var doc functi
  • 如何将值传递到 selectOneMenu 中的监听器

    我有 2 个下拉菜单 类型和代码 如果值 A 或 B 或 C 我希望代码下拉列表根据类型下拉列表更改值 如何将 A 或 B 或 C 的值传递给侦听器 以便它可以理解和处理我的 List
  • f:ajax 不工作

    我很难得到f ajax从事某项工作h panelGroup 这就是我正在做的 JSF 代码
  • 由于浏览器设置的标头,Safari 拒绝重定向的 CORS 请求

    Summary Safari 拒绝一些涉及重定向的 CORS 请求 声称某些标头是不允许的 但该标头从来不是由脚本请求的 而是由浏览器添加的 所以我认为这应该不重要 Safari 的行为是一个错误吗 规格有问题吗 或者 事情变成这样是有原因
  • 如何在phonegap应用程序中使用存储在localStorage中的json feed?

    这就是我正在做的 向我的网络服务器发出请求 响应采用 json 格式 使用 jquery 模板在我的应用程序中呈现回调数据 非常简单 就像魅力一样 问题是 我想在本地存储一些数据 这样我的应用程序就不必每次都从服务器获取它 3g 很慢 每笔
  • 在淘汰赛应用程序中使用 setInterval 进行轮询实现?

    我正在尝试使用 setInterval 实现简单的轮询机制 我有一个视图模型如下 define knockout jquery function ko function ViewModel var self this setInterval
  • 未捕获的类型错误:无法读取未定义的属性“toLowerCase”

    我收到此错误 它源自 jquery 框架 当我尝试加载准备好的文档上的选择列表时 出现此错误 我似乎无法找到为什么会出现此错误 它适用于更改事件 但在尝试手动执行该函数时出现错误 未捕获的类型错误 无法读取未定义的属性 toLowerCas
  • 为什么 JSON 结果可以是布尔值而不是对象或数组?

    From JSON 网站 http json org JSON 建立在两种结构之上 名称 值对的集合 在各种语言中 这被实现为对象 记录 结构 字典 哈希表 键控列表或关联数组 值的有序列表 在大多数语言中 这被实现为数组 向量 列表或序列
  • Django:管理中的 AJAX ManyToManyField

    我要显示ManyToManyFields 在 admin 中就像filter horizontal确实如此 但会在用户在过滤器字段中键入内容时填充选项 有很多选项 一次性加载它们需要很多时间 I found django ajax 过滤字段
  • 如何发送正确的授权标头以进行基本身份验证

    我正在尝试从 API 发布数据 但无法通过基本身份验证 I try ajax type POST url http theappurl com api v1 method data crossDomain true beforeSend f
  • 为什么 CloudFront 根据 Accept-Encoding 改变 CORS 标头响应?

    我正在尝试让 CORS 与 Amazon S3 CloudFront 一起正常工作 设置我的 CORS 配置后 它似乎可以正常工作 curl H Origin https app close io I https d4389n07pf8cq
  • jQuery:离线后 POST 出错(iOS 和 Chrome)

    我构建了一个具有离线功能的 HTML5 Web 应用程序 使用 AppCache 程序流程为 Online 在网络上时 应用程序预加载一些基本信息 工作 Offline 用户拿着装有应用程序的平板电脑offline 然后在应用程序上执行他们
  • ExtJS:使用“记住我”功能登录

    我正在尝试创建一个具有非常常见的 记住我 功能的简单登录窗口 登录验证是通过 AJAX 风格完成的 因此浏览器不会记住我的输入 我的方法是使用内置的state功能 但是如何使用它让我很困惑 Ext state Manager setProv
  • 如何使用 jQuery 通过 Ajax 发送复选框数组的值?

    我有一个包含很多表单字段的表单 12 x n 行 每行中的第一个字段 代表产品 是一个类似于以下内容的复选框
  • 在 php、ajax 或 javascript 中加载进度?

    任何人都知道如何在系统仍在服务器端获取数据的同时在客户端显示加载进度以及完成的百分比 例如 当我在客户端按下 确定 按钮时 它会调用服务器端从数据库收集数据 整个过程可能需要2到3分钟 如何在客户端显示加载进度 大约加载完成了多少 我怎样才
  • 如何使用 php 发送服务器错误响应?

    一旦用户点击删除按钮我的 jQuery 脚本要求服务器删除所选项目 现在我想要我的php发送成功或错误响应的脚本 是否有可能触发错误回调万一该项目无法删除 Thanks 我的 jQuery 代码 ajax type post url myA
  • jquery datatable ajax 无数据可用 mvc

    我有一张桌子是在 document ready功能 我还使用 jQuery DataTables 插件 由于某种原因 当页面加载时 ajax 调用控制器并返回数据并将其设置为我的网格所有获取的数据 但是尽管所有数据都加载到数据表中 但仍获取
  • 如何在同一页面上使用AJAX处理多个表单

    我有一个表单 当我单击 提交 时 它就被提交了 然后该表单隐藏 操作页面的结果显示在 div 中 classname dig 它工作正常 但是当我添加另一个表单时 它停止正常工作并且所有表单同时提交 我如何更改我的代码 done click
  • ajax4jsf死了吗?还有哪些其他适用于 JSF 的 AJAX 库?

    我目前正在使用JBoss RichFaces http www jboss org jbossrichfaces 我正在从事的项目的 JSF 组件库 一般来说 它工作得很好 特别是 ajax4jsf A4J 提供的 AJAX 支持 但我发现
  • JQuery 图像上传不适用于未来的活动

    我希望我的用户可以通过帖子上传图像 因此 每个回复表单都有一个上传表单 用户可以通过单击上传按钮上传图像 然后单击提交来提交帖子 现在我的上传表单可以上传第一个回复的图像 但第二个回复的上传不起作用 我的提交过程 Ajax 在 php 提交

随机推荐

  • 仅在 WCF Web 服务中的某些方法需要凭据

    我有一个具有不同方法的 UserAccountService 其中一些方法需要对用户进行身份验证 例如 ChangePassword ChangeUserData 而另一些则不需要 RegisterUser 然而 我似乎无法让它工作 因此只
  • 低级鼠标钩子 - 鼠标在断点处冻结

    我想自己绘制和移动我的窗口 使用 chromium 嵌入式框架 为此 当鼠标移动到窗口之外时 我需要一个全局回调 所以我安装了一个低级别的鼠标钩子 hMouseLLHook SetWindowsHookEx WH MOUSE LL HOOK
  • 如何在PIL中减少png图像文件大小

    我已经使用 PIL 将 JPG BMP 文件转换并调整大小为 PNG 格式 我可以轻松调整大小并将其转换为 PNG 但新图像的文件大小太大 im Image open input jpg im resize im resize 400 40
  • 如何将 Mongoose 文档转换为普通对象?

    我有一个来自猫鼬的文档 我想在 JSON 编码并作为响应发送之前进行扩展 如果我尝试向文档添加属性 它将被忽略 该属性未出现在Object getOwnPropertyNames doc 无法正常延长 奇怪的是JSON parse JSON
  • 收到“线程 1:EXC_BAD_ACCESS”错误?

    我正在使用 WKWebView 和 Swift 语言创建一个简单的 Web 查看器 这是我的代码 import Cocoa import WebKit NSApplicationMain class AppDelegate NSObject
  • NSMutableDictionary 以 UIButton* 作为键 - iPhone 开发

    我是 iPhone 开发新手 我有一个问题 可能有一个非常简单的答案 我正在尝试向视图添加按钮 这些按钮与我定义的自定义类相关联 当我将按钮添加到视图中时 我想知道这些按钮对应什么类 这是因为当我按下按钮时 我需要获取有关该类的一些信息 但
  • VKDefault - 三角器未能完全三角化多边形 MapKit

    我遇到了收到警告的问题 VKDefault Triangulator failed to fully triangulate polygon MapKit放大和缩小地图上的特定区域时 我正在从 json 数据创建多边形 该数据可以包含 MK
  • Scikit-learn 的 LabelBinarizer 与 OneHotEncoder

    两者有什么区别 似乎两者都创建了新列 其数量等于特征中唯一类别的数量 然后 他们根据数据点所属的类别将 0 和 1 分配给数据点 下面显示了使用 LabelEncoder OneHotEncoder LabelBinarizer 对数组进行
  • 如何从数据库中获取可为空的 DateTime

    我的 SQL Server 数据库包含可为空的 DateTime 值 如何将它们转换为 C 应用程序中可为 null 的 DateTime 对象 这就是我认为的样子 但事实并非如此 DateTime dt DateTime sqldatar
  • Android:在异步任务期间处理后退按钮

    我有一个显示列表视图的活动 单击项目时 将启动第二个活动 该活动运行一个 AsyncTask 根据单击的项目获取远程 URL 解析结果 然后将这些结果显示到另一个列表视图中 当异步任务运行时 我有一个 正在加载 视图 仅显示图像和文本 问题
  • 如何检测浏览器是否支持flash?

    我的网站只有两个版本 一种是针对支持 Flash 的设计 如桌面设备 另一种是针对移动设备的设计 我只是想知道我是否可以检测到 如果是真的 支持 他们将保持相同的网站假设是http mywebsite com但链接会显示http myweb
  • Java 浮点意外圆角化

    我正在使用浮点常量并将对象私有浮点变量设置为下面的浮点常量 但是当对象输出它设置的值时 它会四舍五入浮点中的最后一位数字 private final float RF FREQUENCY 956 35625f Object o new Ob
  • 如何检查一个控件是否是另一个控件的子控件? “Control.IsChildOf”

    我有 3 个面板
  • 蜡染:Linux 上的 svg 到 pdf(无 X 服务器)

    类似于中的方法将 SVG 转换为 PDF https stackoverflow com questions 6875807 convert svg to pdfsvg2pdf 转换在 Windows 下成功运行 并且可以在生成的 pdf
  • 如何在 ExtJs 中添加复制到剪贴板功能?

    如何在 ExtJs 中添加复制到剪贴板功能 它在 IE 浏览器中工作正常 但在 Firefox 中不行 还需要进行哪些更改才能使其在 FF 浏览器中工作 Code function selectCopy txt txtId Ext getC
  • 为什么 Android Studio 说“未收到测试事件”?

    我正在尝试在我的 Android 应用程序中进行单元测试 这是我正在做的简单测试教程 import static org junit Assert import org junit Test import org junit runner
  • Linux 下签名的可执行文件

    出于安全原因 最好在执行之前检查代码的完整性 避免软件被篡改由攻击者发起 所以 我的问题是 如何在Linux下对可执行代码进行签名并仅运行受信任的软件 我读过范杜姆的作品et al Linux 签名可执行文件的设计和实现 以及 IBM 的T
  • 带有 COUNT 帮助的 SQL 子查询

    我有一个有效的 SQL 语句 SELECT FROM eventsTable WHERE columnName Business 我想将其添加为子查询 COUNT Business AS row count 我该怎么做呢 这可能是最简单的方
  • Visual Studio Code 像 HTML 一样自动关闭标记和缩进 XML

    我开始使用 Visual Studio Code for HTML 和 CSS 因为在我看来 它似乎是一个不错的编辑器 除了这个小问题 当我开始使用它时 我必须获得一个扩展才能获得自动结束标签 我发现的所有扩展似乎都以相同的方式执行此操作
  • Visual Studio Team Services REST API 的 AJAX 跨域问题

    我正在尝试为 Visual Studio Team Services REST API 编写一个 JavaScript 客户端 该客户端将 AJAX 请求发送到我们自托管的 Team Foundation Server 2015 但我面临跨