【问题标题】:Angular/Breeze app connecting to Web API throws "Access Denied" error on IE11连接到 Web API 的 Angular/Breeze 应用程序在 IE11 上引发“拒绝访问”错误
【发布时间】:2023-03-03 00:58:01
【问题描述】:

应用程序

简而言之,应用程序将数据从后端显示到网页上。客户端应用程序是使用 AngularJS 制作的单页应用程序。它调用位于不同域的 ASP.NET Web API 服务来检索数据。我在客户端应用程序和 Web 服务上都使用 BreezeJS 来管理这些数据。客户端托管在 SharePoint Online 网站上,服务托管在 IIS7 上。

错误

当 AngularJS 尝试针对此 Web 服务进行 XMLHttpRequest.open() 调用时,我遇到了“拒绝访问”错误。然而,虽然这似乎是一个简单的 CORS 问题,但它有一些让我难以理解的特点:

  1. 最重要的是,此错误仅在使用 Internet Explorer 11(或以前的版本)时发生。当在 Chrome 或 Firefox 中查看应用程序时,它可以连接并从服务中检索数据。

  2. Web 服务配置为接受调用源。

  3. 本机 IE 开发工具或 Fiddler 均未检测到网络流量。

具体来说,angular.js 文件的xhr.open(method, url, true); 行会抛出此错误。

有没有人知道为什么会发生这个错误?

另外,如果需要更具体的细节,我当然可以提供。我什至不确定问题可能来自哪里,我不想转储大量不相关的代码行。

【问题讨论】:

    标签: angularjs asp.net-web-api cors breeze


    【解决方案1】:

    我认为这是由于使用了“localHost”,即尝试从“Internet”区域中的源访问“本地 Intranet”区域中的资源时。

    见:Access denied in IE 10 and 11 when ajax target is localhost

    【讨论】:

      【解决方案2】:

      这不仅仅是之前建议的本地主机问题。我有一个生产 AngularJS 应用程序,它试图 POST 到不同域上的公共 Web API 2。当网站被外部访问时,IE11、Chrome 和 Firefox 可以顺利运行。当从可以直接与这些服务器通信的子网访问时,我得到Access Denied 并且 IE 甚至不发送请求(Chrome 和 Firefox 工作完美,当然。一种解决方法(我拒绝称之为修复)是在 IE11 中将该站点添加为受信任站点。即使 Internet 的安全设置反映了受信任站点的设置,我也会被拒绝访问。我必须在每个内部 IE 系统上添加该站点才能获得访问权限。

      【讨论】:

      • 我们实际上让我们的 IT 部门推送了一个脚本,以将站点添加到所有内部机器上的受信任站点。
      猜你喜欢
      • 2015-01-23
      • 2014-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多