IE11用Negotiate

时间:2018-02-09 03:00:20

标签: angular asp.net-core internet-explorer-11 bearer-token

我们在Angular 4前端和.NET Core 1.0服务中有一个应用程序。 WEB API请求是使用带有JWT承载令牌的http.request从Angular发出的。这是一个相对较大的应用程序,所有HTTP请求都通过Angular中的公共服务进行路由。它适用于所有环境中的Chrome和FF。但是,无论何时用户使用IE11,它都会在生产环境中间歇性地抛出未经授权的错误。 它适用于在开发环境(Windows 7,64位),DEV测试环境(Windows Server 2008 R2,64位,与dev相同的域),QA环境(Windows Server 2008 R2, 64位,与dev相同的域),测试安装程序(Windows Server 2008 R2,64位,与生产相同的域),模拟站点(Windows Server 2008 R2,64位,与生产相同的域)。但它为某些用户在IE11中的预生产和生产(Windows Server 2008 R2,64位)中引发了间歇性错误。 前端站点配置为匿名和Windows身份验证。 Webservice配置为匿名使用承载令牌。 Web API启动具有如下所示的授权策略     var policy = new AuthorizationPolicyBuilder()。RequireAuthenticatedUser()。Build();

当我们分析Fiddler中的调用时,我们发现投掷401的请求具有Negotiate而不是bearer token的授权。 当我们启动网站时,它没有任何问题,并且工作了一段时间但开始发送授权:在几个请求之后进行协商。 我为Angular中的所有HTTP调用添加了大约100ms的延迟,在WEB API响应头中放置了no-cache,没有任何东西可以解决问题。 此问题仅发生在IE11生产和预生产环境中的某些用户。但他们可以在IE11中使用其他环境而不会出现任何问题。另一个有趣的因素是,预生产适用于某些用户,同一个用户在生产中遇到问题,反之亦然,两者都在同一个域中但在不同的框中。生产是唯一一个拥有有效SSL证书的其他站点(开发除外)具有自签名证书。  在WEB API中为配置文件中提到的URL启用CORS。 我正在寻求帮助。非常感谢任何输入

1 个答案:

答案 0 :(得分:0)

我们已关注@JoshuaBarron reply并在网站级别启用了匿名访问。这解决了这个问题。我们错过了在网站级别进行生产和预生产的匿名访问。不幸的是,我们无法访问任何内容。