发布与我面临的解决方案类似的问题。
希望它对具有preserving hash in IE
302重定向的类似要求的人有所帮助。
添加答案的必要部分,而不是仅添加链接
我们SiteMinder
在应用程序中使用身份验证。
我想通了,认证成功后,SiteMinder
正在做302 redirection
使用用户请求的应用程序页面的登录表单隐变量value
(它存储用户请求的URL /myapp/
- without hash fragment
因为它不会被发送到服务器)与类似的名称redirect
。下面的样本表格
由于redirect
隐藏变量值仅包含/myapp/
不包含散列片段,并且是302重定向,因此即使在进入我们的应用程序之前,IE也会自动删除该散列片段,无论我们在应用程序代码中尝试使用的任何解决方案都无法解决。
IE正在重定向到/myapp/
仅,并且已登陆我们应用程序的默认主页https://ourapp.com/myapp/#/home
。
已经浪费了将近一天的时间来弄清楚这种行为。
解决方案是:
通过添加现有值来更改登录表单隐藏变量(redirect
)的值以保存哈希片段window.location.hash
。类似于下面的代码
$(function () {
var $redirect = $('input[name="redirect"]');
$redirect.val($redirect.val() + window.location.hash);
});
进行此更改后,redirect
隐藏变量将用户请求的URL值存储为/myapp/#/pending/requests
,SiteMinder
并将其重定向到/myapp/#/pending/requests
IE中。
上面的解决方案在所有三种浏览器中都可以正常工作Chrome, Firefox and IE
。
感谢@AlexFord提供详细说明并提供此问题的解决方案。