我在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
可能会在一段时间后发布用户身份验证吗?
我列出了尝试解决以下问题的方法:
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;