如果我从 Angularjs SPA 调用 VSO API,为什么我会在 Chrome 中收到 Internet Explorer 增强的安全错误消息?
Why I get Internet Explorer enhanced security error message in Chrome if I call VSO API from Angularjs SPA?
我在 Angularjs 中实现了一个 SPA - Typescript 调用 VSO API 并提供身份验证数据,您可以在下面找到:
((): void => {
"use strict";
angular
.module("app")
.config(config);
config.$inject = [
"$httpProvider"
];
function config(
$httpProvider: ng.IHttpProvider
) {
$httpProvider.defaults.headers.common['Authorization'] = "Bearer username:password";
}
});
我看到此调用将被重定向到此处的浏览器的“网络”选项卡:
https://app.vssps.visualstudio.com/_signin?realm=dldxdm.visualstudio.com&reply_to...
还有一个后续请求。
控制台没有显示任何身份验证错误,但我的请求(GET)没有结果但应该是!我得到的不是结果,而是您可以在屏幕截图中看到的消息。 您的环境当前启用了 Microsoft Internet Explorer 的增强安全配置。这种增强的安全级别会阻止我们的 Web 集成体验正确显示或执行。要继续您的操作,请禁用此配置或联系您的管理员。 但查询在 Chrome 中执行。为什么此处出现 IE 错误消息?
在浏览器中我登录 VSO 到项目,如果我复制 url 并粘贴到另一个选项卡并执行它,我将得到我正在寻找的正确结果。
问题:
- 为什么 Angular 应用程序执行的查询没有结果?
- 我应该如何验证 VSO?我无法设置令牌,因为它目前在本地主机上运行。
我用谷歌搜索了 IE 错误消息,但没有答案。关于如何禁用IE的增强安全性我已经找到了Windows服务器的答案。我认为它们与我的问题无关。
更新:
好的,我有一个关于正在发生的事情的 article。下一步,实施。
当我的 PAT 由于复制和粘贴错误而出错时,我发现这发生在我身上。
看起来您可能无法通过身份验证,因为您没有对不记名令牌进行 base64 编码。
我遇到了同样的问题。我在邮递员中验证如下...
我不必对我的 PAT 进行 base64 编码。
我发现我只需要仔细检查我的 PAT 是否具有正确的访问权限。
我将数据作为 Basic Auth 传递。
用户名:"whatever the hell you want"
密码:PAT
响应:200
在您的个人访问令牌 (PAT) 前加上 :(冒号)。然后用 Base 64 编码。
例如:
如果“myaccesstoken”是我的 PAT,
Apply base 64 encoder to ":myaccesstoken"
在授权 header 中,将您的基本编码字符串设为
Authorization : Basic MyColonPrefixedBase64String
如果其他人在 Azure devops 经典管道中遇到同样的错误(像我一样),然后他们可能需要 select 单选按钮标题为“ 允许脚本访问 OAuth 令牌”。此选项在“阶段 >> 代理作业 >> 其他选项”处可用。为了更清楚,您可能想参考这个 blog post.
我在 Angularjs 中实现了一个 SPA - Typescript 调用 VSO API 并提供身份验证数据,您可以在下面找到:
((): void => {
"use strict";
angular
.module("app")
.config(config);
config.$inject = [
"$httpProvider"
];
function config(
$httpProvider: ng.IHttpProvider
) {
$httpProvider.defaults.headers.common['Authorization'] = "Bearer username:password";
}
});
我看到此调用将被重定向到此处的浏览器的“网络”选项卡:
https://app.vssps.visualstudio.com/_signin?realm=dldxdm.visualstudio.com&reply_to...
还有一个后续请求。
控制台没有显示任何身份验证错误,但我的请求(GET)没有结果但应该是!我得到的不是结果,而是您可以在屏幕截图中看到的消息。 您的环境当前启用了 Microsoft Internet Explorer 的增强安全配置。这种增强的安全级别会阻止我们的 Web 集成体验正确显示或执行。要继续您的操作,请禁用此配置或联系您的管理员。 但查询在 Chrome 中执行。为什么此处出现 IE 错误消息?
在浏览器中我登录 VSO 到项目,如果我复制 url 并粘贴到另一个选项卡并执行它,我将得到我正在寻找的正确结果。
问题:
- 为什么 Angular 应用程序执行的查询没有结果?
- 我应该如何验证 VSO?我无法设置令牌,因为它目前在本地主机上运行。
我用谷歌搜索了 IE 错误消息,但没有答案。关于如何禁用IE的增强安全性我已经找到了Windows服务器的答案。我认为它们与我的问题无关。
更新:
好的,我有一个关于正在发生的事情的 article。下一步,实施。
当我的 PAT 由于复制和粘贴错误而出错时,我发现这发生在我身上。
看起来您可能无法通过身份验证,因为您没有对不记名令牌进行 base64 编码。
我遇到了同样的问题。我在邮递员中验证如下...
我不必对我的 PAT 进行 base64 编码。 我发现我只需要仔细检查我的 PAT 是否具有正确的访问权限。 我将数据作为 Basic Auth 传递。 用户名:"whatever the hell you want" 密码:PAT
响应:200
在您的个人访问令牌 (PAT) 前加上 :(冒号)。然后用 Base 64 编码。
例如:
如果“myaccesstoken”是我的 PAT,
Apply base 64 encoder to ":myaccesstoken"
在授权 header 中,将您的基本编码字符串设为
Authorization : Basic MyColonPrefixedBase64String
如果其他人在 Azure devops 经典管道中遇到同样的错误(像我一样),然后他们可能需要 select 单选按钮标题为“ 允许脚本访问 OAuth 令牌”。此选项在“阶段 >> 代理作业 >> 其他选项”处可用。为了更清楚,您可能想参考这个 blog post.