发布与我面临的解决方案类似的问题。
preserving hash in IE
希望它对具有类似302 重定向要求的人有所帮助。
添加答案的重要部分而不是单独的链接
我们SiteMinder
在应用程序中使用身份验证。
我发现在成功验证后,SiteMinder
正在302 redirection
使用名称类似于value
/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 对此问题的详细解释并提供了解决方案。