使用JQuery Mobile(和ASP.NET MVC3)的空白重定向页面

时间:2012-01-11 00:59:10

标签: facebook asp.net-mvc-3 jquery-mobile

我只有一个奇怪的问题,只有Chrome + Firefox。它不会在IOS或IE9上重现。

这是repro:

  1. 加载主页http://example.com
  2. 登录(通过rel =“外部”超链接)。在我的情况下,我使用Facebook的Oauth服务器端流程 - 所以这个URL是facebook.com。
  3. Facebook接受用户的凭据,然后重定向到http://example.com/user/callback。这里处理各种facebook数据(它在查询字符串中提供)。
  4. http://example.com/user/callback处的服务器端代码会将用户重定向到http://example.com。用于重定向的机制是来自ASP.NET MVC3的RedirectToAction。这将返回302。
  5. 预期成果: 用户会在其浏览器中看到一个网址= http://example.com,并且内容都很好地显示出来。这适用于IE和Safari。

    操作结果(仅限Chrome) 用户在其浏览器中获取网址= http://example.com/#base_domain=example.com 实际页面为空白(无可见内容) 但是,视图来源显示内容存在。

    操作结果(仅限Firefox) 用户在其浏览器中获取网址= http://example.com/#_=_ 实际页面为空白(无可见内容) 但是,视图来源显示内容存在。

    其他信息 如果我在IE中输入网址http://example.com/#base_domain=example.com,我会得到相同的“隐藏”内容(即仍然存在HTML源的空白页)。

    我还应该注意,我在应用程序的其他部分使用RedirectToAction / 302重定向技术,没有任何问题。

    该问题还关闭了AJAX导航的重新编译。

    编辑:这也适用于Safari(OSX + Windows),没有任何问题。它在Windows和PC上的Chrome + Firefox上显然都被打破了。

    IOS / Safari:好的 Win / Safari:好的 赢/ IE:好的 Windows Phone模拟器:好的

    Win / Firefox:borked 赢/ Chrome:borked

    OSX / Safari:好的 OSX / Firefox:borked OSX / Chrome:borked

    不确定Android。

1 个答案:

答案 0 :(得分:1)

最佳解决方案似乎是将Push State和Hash Listening设置为false - 因此chrome / ff完全忽略它们。我已经禁用了AJAX导航(有一些有趣的行为,我还没有完全考虑到我的服务器端代码)。

    $.mobile.pushStateEnabled = false;
    $.mobile.hashListeningEnabled = false;

在尝试让AJAX导航工作之前,我可能会等待1.1并稳定我的其余代码。