使用QueryString参数重定向HTML对QueryString分隔符进行编码

时间:2019-02-05 10:33:01

标签: asp.net asp.net-mvc

在客户方面(大型企业),我们有许多应用程序可以根据中央身份验证提供程序进行身份验证。这里发生了很多重定向,但是在Chrome和Firefox上无法正常工作。

(以前是唯一允许的IE。现在允许使用所有其他浏览器。这就是为什么现在会发生此问题。)

  1. 如果App1需要身份验证
    • /App1/Home/Index
  2. 通过添加返回URL和应用程序ID作为查询参数来重定向到中央身份验证服务:
    • /AuthService/Auth/Login?ReturnUrl=/App1/Home/Index&AppId=3
  3. 如果用户位于企业网络内部,则会将其重定向到AD身份验证服务:
    • /AdAuthService/Autologin/Login?ReturnUrl=/AuthService/Auth/ReturnFromAdLogin&prev=/App1/Home/Index
  4. 成功通过身份验证后,应该转到
    • /AuthService/Auth/ReturnFromAdLogin?ReturnUrl=/App1/Home/Index
  5. ,然后返回
    • /App1/Home/Index

所有重定向均通过控制器操作中的RedirectResult完成。

连接的问题是,所有步骤都可以在所有浏览器中使用,直到步骤3。在IE中的所有浏览器中,步骤3的查询字符串如下所示:

?ReturnUrl=/AuthService/Auth/ReturnFromAdLogin&prev=/App1/Home/Index

查询字符串分隔符得到HTML编码,并从&变为&。结果,无法读取prev参数,并且用户永远不会重定向到最初请求的页面。

它不会更改步骤2中的分隔线。为什么?有任何想法吗?

0 个答案:

没有答案