如果我从 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 并粘贴到另一个选项卡并执行它,我将得到我正在寻找的正确结果。

问题:

我用谷歌搜索了 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.