angularjs - Microsoft Edge 问题 - 请求的资源需要用户身份验证
问题描述
我有一个网站和 api 托管,最近该网站的用户在使用时尝试向 api 发送数据IIS 8.5
时收到以下控制台错误:POST
Microsoft Edge
HTTP401:拒绝 - 请求的资源需要用户身份验证。(XHR) 选项 - http:// my-local-address /api/customers/approval/post
注意:用户使用 Windows 身份验证进行身份验证。
这是自发发生的,为了解决这个问题,用户被迫在 MS Edge 上进行硬刷新 ( Ctrl+ F5),然后他们可以继续他们的过程。是否有设置在IIS
一段时间后释放用户身份验证?
我列出了解决以下问题的尝试:
- 我让我的组织为我的本地网址添加了一个受信任的策略。
- 更改了 API 的提供者。将NTLM移至Negotiate上方。
- 删除了基于此 stackoverflow 后Windows 身份验证在 IIS 7.5 中失败的协商。
- 尝试从
POST
请求中捕获错误,但我每次都返回null 。 - 配置
CORS
为允许跨源。
注意:我正在使用angularjs
我的前端和ASP.NET Web API 2
API。
以下代码片段详细说明了 Web Api 的配置方式:
WebApiConfig.cs
var cors = new EnableCorsAttribute("*", "*", "*") { SupportsCredentials = true };
config.EnableCors(cors);
网页配置
<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>
Angular 模块配置$httpProvider
用于为$http
请求提供凭据
$httpProvider.defaults.withCredentials = true;
解决方案
推荐阅读
- jquery - 如何使用 jquery GET 一次获取页面内容但将其拆分并插入到不同的 div 中?
- c# - Assembly.Load(Assembly) 如何永远不会为空?
- css - CSS/SCSS 框架是否生成了这个文件结构?如果有,是哪一个?
- c# - 默认文档未正确附加查询字符串
- flutter - dart null 安全类初始化
- dart - Dart gsheets 0.3.1 API - Google Sheets API - 是否可以将它与命名范围一起使用?
- flutter - 如何在颤动中制作具有每日视图的水平周滑块
- swift - 如何将 SwiftUI 状态从特定值更改为新状态值的动画?
- jira - Jira API - 在 1 次调用中设置受让人和应用转换
- java - 你可以在一个方法上要求至少 1 个特定类型的 Spring Annotation 吗?