Microsoft Edge问题 - 请求的资源需要用户身份验证

时间:2018-06-14 09:53:02

标签: angularjs asp.net-web-api2 microsoft-edge iis-8.5

我在IIS 8.5上托管了一个网站和api,最近在使用POST时尝试将Microsoft Edge数据发送到api时,该网站的用户收到以下控制台错误:

  

HTTP401:DENIED - 请求的资源需要用户身份验证。   (XHR)选项 - http:// my-local-address / api / customers / approval / post

注意:使用Windows身份验证对用户进行身份验证。

这是自发发生的并且为了解决问题,用户被迫在MS Edge上进行硬刷新( Ctrl + F5 ),然后他们可以继续他们的处理。 IIS可能会在一段时间后发布用户身份验证吗?

我列出了尝试解决以下问题的方法:

  • 我已让我的组织为我的本地网址添加可信政策。
  • 更改了API的提供程序。将 NTLM 移到谈判上方。
  • 根据此stackoverflow帖子Windows authentication failing in IIS 7.5删除协商
  • 尝试捕捉POST请求中的错误,但我每次都返回 null
  • 配置CORS以允许交叉来源。

NB:我使用angularjs作为前端,ASP.NET Web API 2作为API。

以下代码段详细说明了如何配置Web Api:

WebApiConfig.cs

var cors = new EnableCorsAttribute("*", "*", "*") { SupportsCredentials = true };
config.EnableCors(cors);

的Web.config

  <system.web>
    <identity impersonate="true" />
    <compilation debug="true" targetFramework="4.5.1">
      <assemblies>
        <add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
      </assemblies>
    </compilation>
    <httpRuntime targetFramework="4.5.2" />
  </system.web>
  <system.webServer>
     <validation validateIntegratedModeConfiguration="false" />
     <handlers>
        <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
        <remove name="TRACEVerbHandler" />
        <remove name="OPTIONSVerbHandler" />
        <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
     </handlers>
  </system.webServer>

使用$httpProvider使用凭据提供$http请求的Angular模块配置

$httpProvider.defaults.withCredentials = true;

0 个答案:

没有答案