使用withCredentials的同一个域自动登录到WebApi

时间:2019-01-21 16:27:43

标签: angular cors

我有一个Angular 7应用程序,可以从WepApi获取数据。两者都在同一个域中运行,该API基于Asp.Net。 OPTIONS被捕获在Application_BeginRequest中并被接受,而凭据随后将通过IIS检查。到目前为止,一切正常。

  • IIS使用Windows身份验证为Angular应用程序提供服务。自动登录可以在IE / Edge和Chrome中正常运行。 Firefox在首次登录时要求提供凭据。

  • 同一域中的IIS也使用Windows身份验证为WebApi后端提供服务。在IE / Edge和Chrome中,自动登录可以正常工作(直接浏览到API时)。 Firefox在首次登录时要求提供凭据。

我无法解决的问题是:

  • 使用Angular应用程序,将带有“ withCredentials:true”的HTTP请求发送到WebApi。对于第一个请求,所有浏览器都要求提供Windows凭据。

是否有办法使自动登录也可以用于对WebApi的CORS调用?一次输入凭据后,它可以正常工作,为什么不使用Windows中的默认凭据?有没有办法告诉我我在呼叫同一个域?

1 个答案:

答案 0 :(得分:0)

自己弄清楚。解决方案是在从Angular到后端的HTTP请求中使用页面url而不是页面IP(例如,“ http://myinternalsite/api/”而不是“ http://192.168.39.1/api/”作为HTTP请求的基本URL) 。然后,浏览器可以正确地识别位于同一域中的目标网站,并自动使用适当的凭据,而不提示用户。