如果我从Angularjs SPA调用VSO API,为什么我在Chrome中会收到Internet Explorer增强的安全错误消息?

Say*_*ndo 9 authentication google-chrome angularjs azure-devops-rest-api

我在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";

    }
});
Run Code Online (Sandbox Code Playgroud)

我看到浏览器的"网络"选项卡将此调用重定向到此处:

https://app.vssps.visualstudio.com/_signin?realm=dldxdm.visualstudio.com&reply_to...
Run Code Online (Sandbox Code Playgroud)

并提出以下要求.

控制台没有显示任何身份验证错误,但没有我的请求(GET)的结果,但应该是!而不是结果,我得到你可以在截图中看到的消息.这是微软Internet Explorer的增强的安全配置在您的环境目前已启用.这种增强的安全级别可防止我们的Web集成体验正确显示或执行.要继续操作,请禁用此配置或与管理员联系.但是在Chrome中执行了查询.为什么IE错误消息在这里?

在此输入图像描述

在浏览器中我登录到VSO到项目,如果我复制url并粘贴到另一个选项卡并执行它,我将得到我正在寻找的正确结果.

问题:

  • 为什么Angular app执行我的查询没有结果?
  • 我该如何验证VSO?我无法设置令牌,因为它当前在localhost上运行.

我用谷歌搜索IE错误消息,但没有答案.如何禁用IE的增强安全性我找到了Windows Server的答案.我不认为他们与我的问题有关.

更新:

好的,我有一篇关于发生了什么的文章.下一步,实施.

Aru*_*hla 9

在您的个人访问令牌 (PAT) 前添加 :(冒号)。然后对其进行 Base 64 编码。

例如:

如果“myaccesstoken”是我的 PAT,

将 Base 64 编码器应用于“:myaccesstoken”

在授权标头中,将基本编码字符串放置为:

授权:基本 MyColonPrefixedBase64String


Aar*_*lin 8

我发现当我的PAT由于复制和粘贴错误而错误时,这发生在我身上.

看起来您可能未通过身份验证,因为您没有对承载令牌进行base64编码.

  • 对我们来说,这是因为PAT必须以":"作为前缀,然后才能对64进行编码.然后将其作为授权标头提供:Basic <PAT_ENCODED> (5认同)

小智 5

我有同样的问题。我在邮递员中验证了这一点,如下所示......

我不必对我的 PAT 进行 base64 编码。我发现我只需要仔细检查我的 PAT 是否具有正确的访问权限。我将数据作为基本身份验证传递。用户名:“随便你” 密码:PAT

回应:200