我有一个Angular2应用程序与ASP.NET WebAPI端点通信,该端点使用Windows Auth进行身份验证,即在Chrome中第一次请求时无法响应。
第一次访问应用程序向需要身份验证的端点发出请求。在Chrome中,OPTIONS请求成功,在应用程序中OPTIONS请求已配置为始终成功,但是当发出GET请求时,它失败。在请求标头下的Dev Tools中,它显示该请求的临时标题警告消息。刷新浏览器时,端点响应成功。
在IE11和Firefox中,它按预期工作,OPTIONS和GET请求成功。
不确定这是Angular2,ASP.NET WebAPI还是IIS配置问题。
更新 这看起来与Chrome实施HTTP / 2的方式有关。如果HTTP / 2请求失败,Firefox将使用HTTP / 1.1再次尝试请求。
更新2
Chrome会存储第一个请求协议,并将该协议用于将来的请求。我的OPTIONS请求始终响应HTTP / 2请求,成功200次。哪个chrome存储为是这个服务器支持HTTP / 2请求,继续使用它继续。当API GET请求使用NTLM身份验证时,它会失败,因为HTTP / 2不支持NTLM身份验证。 Chrome存储失败,下次尝试HTTP / 1.1成功。我已经向Chromium提交了一份错误报告,因为我认为它应该将所有NTLM身份验证请求视为HTTP / 1.1,因为HTTP / 2不支持NTLM。
https://bugs.chromium.org/p/chromium/issues/detail?id=713851