Ajax上的CORS错误被重定向到ADFS STS服务器

问题描述

我在MVC Razor网站和STS服务器上遇到CORS问题。

MVC网站信息

  • Windows Server 2019
  • IIS 10.0
  • MVC 5
  • 剃刀3

常规信息:

通常,当用户导航到我们的MVC网站之一时,他们将被重定向到ADFS STS服务器,以其域登录登录。成功通过身份验证后,它们将被发送回站点并能够自由导航。一个小时后,下一个返回该站点的请求将短暂地将它们重定向回ADFS服务器,然后返回到其导航到的页面。发生这种情况时不需要他们再次手动登录

这是ADFS站点URL的开头: https://sts.ourdomain.com/adfs/ls/?wtrealm=stuff_stuff_andmorestuff..

虽然我遇到的问题是在新的MVC站点上,但在我们的其他两个MVC站点上也存在该问题,这些站点使用相同版本的MVC和Razor,但托管在旧版Windows Server和IIS上。这些站点还使用同一ADFS STS服务器进行AD身份验证。

问题:

如果用户在MVC站点之一上的页面上,则ajax调用通常可以正常工作。但是,如果从检索到最后一个STS令牌起已经过了一个多小时,并且触发了进行Ajax调用的事件触发,则在Ajax调用期间会将重定向重定向到ADFS服务器,这将导致如下CORS错误

Access to XMLHttpRequest at 'https://sts.ourdomain.com/adfs/ls/?wtrealm=stuff_stuff_andmorestuff...'
(redirected from 'https://OurMVCSite.ourdomain.com/ControllerName/ActionName') from origin 
'https://OurMVCSite.ourdomain.com' has been blocked by CORS policy: Response to preflight request doesn't 
pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.

如果我正确理解了这一点,则由于CORS策略的原因,是ADFS服务器需要在标头中添加例外,以允许MVC网站上的JavaScript从javascript ajax调用重定向到它们。 这正确吗?

一个部门管理ADFS服务器,因此我想确保在使它们涉及之前需要在其中进行更改。

解决方法

您提出的解决方案也不起作用。即使CORS工作正常,您也不会被重定向。将进行ajax调用,然后您就可以从新页面获取数据作为XHR有效负载。

如果第二次重定向将为您返回正确的数据,此方法将起作用:How to overcome CORS redirect issue while performing post operation via ajax?

有一些解决方法,即此处提到的建议:How to manage a redirect request after a jQuery Ajax call