Chrome上的Angular 4 Odata(ASP.net)Windows身份验证

Chrome上的Angular 4 Odata(ASP.net)Windows身份验证,angular,windows-authentication,angular-http,angular-http-auth,Angular,Windows Authentication,Angular Http,Angular Http Auth,我有一个Angular 4服务,它调用ODataAPI。我的API设置可以使用Windows身份验证,这可以通过IE(版本11)实现,但不能通过Chrome实现,Chrome会抛出: 加载资源失败:服务器响应状态为401(未授权) 其次是: 无法加载XMLHttpRequest。对飞行前请求的响应未通过访问控制检查:请求的资源上不存在“访问控制允许来源”标头。因此,不允许访问源“”。响应的HTTP状态代码为401 我使用以下方法为每个发送的请求创建选项: private GetOptions()

我有一个Angular 4服务,它调用ODataAPI。我的API设置可以使用Windows身份验证,这可以通过IE(版本11)实现,但不能通过Chrome实现,Chrome会抛出:

加载资源失败:服务器响应状态为401(未授权)

其次是:

无法加载XMLHttpRequest。对飞行前请求的响应未通过访问控制检查:请求的资源上不存在“访问控制允许来源”标头。因此,不允许访问源“”。响应的HTTP状态代码为401

我使用以下方法为每个发送的请求创建选项:

private GetOptions():requestoptions参数{
let选项:RequestOptionsArgs;
选项={
headers:this.GetHeaders(),
证书:正确
};
返回选项;
}
私有GetHeaders():头{
let headers=新的headers();
附加(“OData版本”、“4.0”);
headers.append(“内容类型”,“应用程序/json;odata.metadata=minimal”);
headers.append(“接受”、“应用程序/json”);
返回标题;
}
在我的API上,我启用了CORS:

var cors=new EnableCorsAttribute(来源:“*”,标题:“*”,方法:“*”,公开标题:“*”)
{
SupportsCredentials=true
};
配置使能cors(cors);
我还在web.config中启用了Windows身份验证:


有人知道我会错过什么吗


我觉得这是一个头球问题;当我在Chrome中运行get请求时,例如导航到
http://gbldnrgaptest1:53219/User
它返回的很好,一旦我添加了NTLM身份验证,SOAP UI也可以工作。

要使它工作,我必须执行以下操作:

将以下内容添加到Web.Config:

<authorization>
  <allow verbs="OPTIONS" users="*"/>
  <deny users="?" />
</authorization>

这是因为发送的飞行前请求显然不发送凭证,这导致了错误的发生。
现在设置了上述规则,匿名身份验证需要重新打开;然后,Web.Config中的规则集将过滤通过的内容,只允许以匿名方式执行选项请求。

要使其正常工作,我必须执行以下操作:

将以下内容添加到Web.Config:

<authorization>
  <allow verbs="OPTIONS" users="*"/>
  <deny users="?" />
</authorization>

这是因为发送的飞行前请求显然不发送凭证,这导致了错误的发生。
现在设置了上述规则,匿名身份验证需要重新打开;Web.Config中的规则集将过滤通过的内容,只允许以匿名方式执行选项请求。

您是否尝试过此操作?是的,这些提供商一直可用,仍然没有运气。您尝试过此操作吗?是的,这些提供商一直可用,仍然没有运气