【发布时间】:2019-10-17 00:54:09
【问题描述】:
我有一个项目,它是一个需要 Windows 身份验证的 Web 应用程序。
我在家中使用我的 NAS 虚拟化设置了一个 Active Directory。然后我为 IIS 创建了一个 VMWare 服务器,它是我桌面上该域的成员,我也用于开发。我已经创建了 Web API 并将其安装到那个 VMWare 服务器中。当我直接调用例程时,它可以工作并返回结果,但是当我从我的 javascript Web 应用程序中使用 Web API 例程时,我不断收到 401 错误。然后我将代码放在 IIS 服务器上,Web 应用程序就可以工作了。
我见过很多解决方案,比如在 IIS 身份验证中更改 Provider 的顺序。添加了每个人对文件夹的读/写权限。我还在 web.config 上添加了条目。但它们都不起作用。
*****根据评论要求更新*****
下面是我直接从 Web API 运行时
仅供参考,我尝试在同一台机器上从 Visual Studio 运行 Web api,但也出现 401 错误
有什么我可以添加到 AD 以使我的开发机器成为可信的吗?
************************代码更改后的新问题**********
****************另一个更新****** 这肯定很奇怪,所以我安装了 Fiddler 4 来看看发生了什么。但仍然没有运气。
然后我对 IIS HTTP 响应标头进行了更改
奇怪的是,当我运行 Fiddler 时,错误消失了,但当我关闭它时,它又回来了。
【问题讨论】:
-
401 响应是 Windows 身份验证中正常的第一步。然后由应用程序重复请求,包括凭据。你能显示你用来发出请求的代码吗?如果现在不这样做,这通常是一种自动发生这种情况的方法。
-
401 是您服务器的基本质询响应。当你访问windows认证时,服务器会返回401,浏览器会提示输入windows凭证。那么你的意思是你可以通过网络浏览器访问网络 api,但是当你从 javascript 调用它时会失败?
-
@JokiesDing,没错。在同一个浏览器上,当我运行 web api 时,它会显示结果,但是当它来自 javascript 时,就会出现 401 问题。
-
@GabrielLuci,我已根据您的评论添加了更新。
标签: iis asp.net-web-api windows-authentication http-status-code-401