1

登录后从服务器发出重定向时,使用:

return Redirect("/Some/Location");

这在除 iPad 上的 Chrome Mobile 之外的任何浏览器中都能完美运行。对于此浏览器,重定向响应中的 Location 格式为:

Location: /(F(kE-dzlf...lots of random characters))/Some/Location

问题是,为什么这个随机字符串会添加到从服务器返回的重定向 URL 中?

不幸的是,由于各种路由问题,这会给应用程序带来严重的问题。

在进一步调查中,我们发现在 Windows 上使用桌面 Chrome 并欺骗浏览器用户代理与 iPad 上的 Chrome Mobile 相同的问题可以重现相同的问题,例如。

Mozilla/5.0 (iPad; CPU OS 6_1_3 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) CriOS/27.0.1453.10 Mobile/10B329 Safari/8536.25

似乎 MVC 服务器上的特定用户代理字符串发生了一些奇怪的行为。甚至上述字符串的各种子字符串也会产生相同的行为。

我们推测这可能是某种 cookie 传递方法,但我们不确定。

谢谢。

编辑: 这个问题的解决方案可以在这里找到: Asp.Net Forms Authentication when using iPhone UIWebView

4

1 回答 1

3

这是因为浏览器没有启用 cookie,或者 IIS 假设用户代理不支持它们。重定向将用户会话的 SessionID 注入 URL。我对 MVC 不是特别熟悉,但我怀疑它是在 web.config 文件中控制的,就像 WebForms 一样。

http://msdn.microsoft.com/en-us/library/h6bb9cz9(v=vs.71).aspx

于 2013-06-07T16:02:06.417 回答