Android Chrome被哈希混淆了

时间:2014-09-23 12:11:52

标签: android asp.net-mvc google-chrome forms-authentication

这是Android Chrome,摩托罗拉Moto G(旧的非4g版本)

我正在使用表单身份验证。在会话超时时,用户将重定向回登录页面。假设他们所在的网址是:

... /控制器/索引#SECTION1

他们被引导到:

... /登录?RETURNURL = /控制器/索引#SECTION1

在除了Android Chrome之外的每个浏览器上都没问题,在登录页面上的chrome上没有任何文本框或按钮工作,就像我没有点击页面一样

经过一段时间的反复试验后,我发现我可以通过剥离#部分来解决这个问题

问题在于典型的流程是

  1. 会话超时,返回错误页面
  2. 有人点击后退按钮,这会将他们带到上一页,进行身份验证 使用查询字符串中的哈希将它们重定向到url。
  3. 如何从表单身份验证重定向中删除哈希?

    感谢

1 个答案:

答案 0 :(得分:0)

这是值得的,这是我解决问题的方法。我不喜欢它,但它现在有效。

如果设置

,我无法删除哈希值
window.location.hash = '' // (or null for that matter)

然后你会遇到同样的问题,因为网址现在看起来像'索引#'

所以我将哈希值更改为登录页面“内容”上的哈希值,这会使问题消失

function TestForAndroidError()
{
    var index = window.location.href.indexOf( '#content' );
    if ( index > -1 )
        return;

    index = window.location.href.indexOf('#');
    if ( index > -1 )
    {           
        // @* We can't seem to remove the hash but we can change it *@
        window.location.hash = 'content';
    }
}

TestForAndroidError();