我对 RedirectResult 的行为感到困惑——在某些情况下(使用 https),重定向似乎没有发生,但更像是转移。
如果用户尝试在未登录的情况下访问内部页面,他们将被定向到登录页面。登录后,他们被引导回我的应用程序,带有查询字符串参数
schema://host:port/myApp?returnUrl=Inspections.mvc/Edit/43523
HomeController 中处理此问题的代码会查找 redirectUrl,并执行以下操作:
if (returnUrl != null)
{
return Redirect(returnUrl);
}
在我的开发环境和一个 QA 环境中,我看到重定向响应返回到浏览器,并按预期发出另一个请求。
但是在生产环境和另一个 QA 环境(两者都使用 https)中,最后一次重定向不会发生。浏览器继续显示url
schema://host:port/myApp?returnUrl=Inspections.mvc/Edit/43523
并显示页面 Inspections.mvc/Edit/43523 将返回的内容。
我很困惑 - 这是使用 RedirectResult 时的预期行为吗?https是相关的区别吗?
编辑:检查流量,我看到在使用 https 的环境中有一个重定向(301-永久移动),但它又回到了完全相同的地址:
schema://host:port/myApp?returnUrl=Inspections.mvc/Edit/43523
这些额外的信息让这个谜团一如既往地令人费解。