从 Angular 访问 webapi 时出现 401 未经授权的错误

2024-03-30

当用户访问我的 webapi 应用程序时,我需要捕获用户的域\用户名。在我的开发机器上,我的 webapi 位于localhost:10570和我的 angularjs 网站,它调用网络服务localhost:34575.

如果我直接调用我的 webapi 应用程序,一切正常。我可以看到用户的域和用户名,并且服务以 JSON 形式返回请求的数据。但是,如果我访问我的 angularjs 站点并且 Angular 调用了 webapi,那么每次针对该服务的调用都会收到 401 未经授权的错误。

在我的 Web Api 应用程序 web.config 中,我有:

<system.web>
    <compilation debug="true" targetFramework="4.5.2" />
    <httpRuntime targetFramework="4.5.2" />
    <authentication mode="Windows" />
  </system.web>
  <system.webServer>
    <httpProtocol>
  <customHeaders>
    <add name="Access-Control-Allow-Origin" value="http://localhost:34575" />
    <add name="Access-Control-Allow-Methods" value="POST, PUT, DELETE, GET, OPTIONS" />
    <add name="Access-Control-Allow-Headers" value="content-Type, accept, origin, X-Requested-With, Authorization, name" />
    <add name="Access-Control-Allow-Credentials" value="true" />
  </customHeaders>
</system.webServer>

我在 IIS Express for Visual Studio 2015 的 applicationhost.config 文件中包含以下内容:

<location path="MyNamespace.WebAPI">
    <system.webServer>
        <security>
            <authentication>
                <windowsAuthentication enabled="true" />
                <anonymousAuthentication enabled="false" />
            </authentication>
        </security>
    </system.webServer>
</location>

我的 angularjs 网站是“MyNamespace.Client”中同一解决方案的一部分。

为什么直接访问Web服务可以正常工作,但通过Angular应用程序访问却失败?


我没有意识到你必须告诉 Angular 将你的凭据发送到服务器。我只需要将 API 调用更改为:

$http.get(url);

to

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

从 Angular 访问 webapi 时出现 401 未经授权的错误 的相关文章

随机推荐

  • Google Play 开发者 API - “当前用户没有足够的权限来执行请求的操作。”

    我有一个 Google 开发控制台进程 启用了 Google Play Developer API 并且该项目链接到 Google Play 项目 在 Google Dev 控制台项目中 创建了 OAuth 客户端 ID Web 应用程序
  • 如何指示Lucene中的StandardAnalyzer不删除停用词?

    简单问题 如何制作Lucene的StandardAnalyzer在分析我的句子时不要删除停用词 答案取决于版本 为了Lucene 3 0 3 当前 http lucene apache org java 3 0 3 api core org
  • 如何添加链接到 Flash 横幅

    我主要是一名开发人员 不知道如何使用 Adob e Flash CS4 有没有一种简单的方法可以将链接添加到 Flash 横幅 我有 flv 文件 其中包含库和两层中的一些项目 请给我一步一步的指示 编辑 我找到简单的解决方案 步骤如下 G
  • 放置项和对齐项有什么区别?

    想知道使用有什么区别 display flex align items center or display flex place items center 视觉上看起来是一样的 place items 有 90 的浏览器支持 align i
  • 具有 .htaccess 和 mod_rewrite 的静态 HTML 文件的语义 URL

    mod rewrite 总是让我困惑 谁能告诉我获得以下干净 URL 所需的规则 左边是所需的 URL 右边是真实的 URL our work gt our work html our work some project gt our wo
  • 使用 CORS 和 OpenShift 上的节点应用程序通过 POST 清空请求正文

    我正在 OpenShift 上使用 Express 创建一个简单的 Node 应用程序 我只是修改 OpenShift 的默认示例 Node 应用程序 我想要 CORS 支持 var cors require cors Initialize
  • 在Python中计算元音

    def main print count def countVowels string vowel aeiouAEIOU count 0 string input enter a string for i in string if i in
  • 文本区域和超链接?

    我有两个关于 Visual Studio 中的 C 的快速 简单的问题 首先 除了程序中的文本区域之外 是否有类似标签的东西 我想在我的程序中包含多行文本 但似乎只能使用打开自动换行的 DotNetBar 标签来完成它 其次 有没有办法在不
  • 是否存在任何危险,例如使用 pip 的 --ignore-installed 标志导致冲突?

    我无法找到 pip 的良好文档 ignore installed flag pip install help简单地说 忽略已安装的软件包 而是重新安装 除了系统上存在更多问题的副作用之外 因为安装的软件包在升级时不会被卸载 是否还有其他已知
  • PHP 评估 $a="$a"?

    我正在查看一些工作代码 并发现了这一行 eval element element 我真的很困惑为什么 PHP 开发人员会写这行代码 除了为自身设置一个变量之外 这还有什么目的 幸运的是 该行所在的函数从未被调用 上面的例子将输出 This
  • 在 Woocommerce 结帐页面中添加信息丰富的自定义消息

    我有一个基于 WP Woocommerce 的网站 我想告诉我的客户 每当他们在我的商店购买东西时 他们订单的 3 都会捐赠给慈善协会 我想显示根据总数计算的确切金额 例如 总计 150 欧元 5 欧元将被下放等 我该如何管理它 您可以将其
  • > 无法在 /opt/android-sdk-linux 中找到哈希字符串“android-26”的目标

    乌班图16 04 android sdk 位于 opt android sdk linux android home 配置 导出 ANDROID HOME opt android sdk linux opt android sdk linu
  • C++ 中真正的异步文件 IO

    我有一个超快的 M 2 驱动器 有多快 没关系 因为我无论如何也无法利用这个速度 这就是我问这个问题的原因 我有一个需要大量内存的应用程序 太多了 以至于内存装不下 幸运的是 并不是一下子就需要它 相反 它用于保存计算的中间结果 不幸的是
  • AdMob - Android 活动中的更好性能

    我有一个 Android 应用程序 我在其中实现了 AdMob 广告 我的布局代码非常简单 将 AdView 添加到 LinearLayout 中
  • 访问者模式对于动态类型语言有用吗?

    访问者模式允许在不扩展对象类的情况下编写对对象的操作 当然 但为什么不直接编写一个全局函数或静态类来从外部操作我的对象集合呢 基本上 在像 java 这样的语言中 accept 出于技术原因需要方法 但在一种语言中我可以实现相同的设计而无需
  • 替换字符串中最后一次出现的字符[重复]

    这个问题在这里已经有答案了 我有一个像这样的字符串 Position fix dial 我想用转义双引号 替换最后一个双引号 字符串的结果是 Position fix dial 我怎样才能做到这一点 我知道要替换字符串的第一次出现 但不知道
  • Android 阻止将照片保存在 DCIM/公共文件夹中

    我正在开发一个 Android 应用程序 用户单击按钮后可以拍照 这张照片将通过以下方法保存到内部包存储 data data package private String saveToInternalSorage Bitmap bitmap
  • 如何在 sqlalchemy 中执行返回的原始查询

    我有一张桌子Ticket具有id 自动递增 票号 读取序列的触发器 value and date在甲骨文中 我想做以下事情 INSERT INTO TICKET value date values 100 TO DATE 07 29 201
  • 在运行时创建实例变量

    我想在运行时动态创建实例变量 并且想将这些变量添加到类别中 实例变量的数量可能会根据我用于定义它们的配置 属性文件而变化 有任何想法吗 Use 关联参考 http developer apple com library ios docume
  • 从 Angular 访问 webapi 时出现 401 未经授权的错误

    当用户访问我的 webapi 应用程序时 我需要捕获用户的域 用户名 在我的开发机器上 我的 webapi 位于localhost 10570和我的 angularjs 网站 它调用网络服务localhost 34575 如果我直接调用我的