为什么我的查询字符串被 iPhone 上的 Chrome Mobile 和 Kindle Fire 的 Silk 浏览器修改?



我有一个门户应用程序,url如下https://pv.xxxxx.org/Y/Students.aspx,至少它在我的PC上的任何web浏览器中都是这样显示的。在我的Kindle Fire HD (Silk)或iPhone (Chrome)上,它显示为

https://pv.xxxxx.org/(F (gXjx4o3HVBTt2dUj-0_fg8JrTaBqvjZUE7WjynRNoYUKpUo3YFpP6KD92KXl6XSeJE633w9eetXNHJhE_bXBrMe8wcd9FKivh16Ibrz4a06dZd4UAxyHTxK2euBM8gRlqzEmgLnQmy830rW2UtMwfmuNJQVwsvyz72EaLNgTkf01))/Y/Students.aspx

只要我点击任何链接在web表单应用程序系统只是注销我。我已经编码了相当重的错误处理到系统中,所以它给我发了一封电子邮件和日志到数据库和事件日志,如果有什么问题,我什么也得不到。我无法重现这个问题,因为它只发生在这两个移动设备上(我可以访问),而且我无法在其上运行调试器。

其他一些信息它不做坏的事情,我的url在Safari在iPhone上。我确实使用querystring来传递变量,但不是在您第一次加载应用程序时,这是在最终用户(在这种情况下是我)经过身份验证并在登陆页面之后。

所以我的问题是为什么它被修改了,我能让它停止吗,如果不能,我怎么修复它?我一直在努力寻找任何关于这个问题的提及,更不用说通过谷歌找到解决方案了。

我的门户应用程序运行的是asp.net 4.0,我不能达到4.5,因为我运行的是windows 2003服务器,它不让我安装它。所以这个问题与运行4.5或更高版本的人无关。在我上面提到的浏览器中,它们采用基于表单的身份验证并将其设置为无cookie模式。我假设,虽然我不确定,但添加到Querystring中的是身份验证令牌。

为了解决这个问题,这样我的最终用户就不必在他们的cookie设置上瞎折腾了,我更新了我的网页。用下面的代码配置:

<authentication mode="Forms" >
  <forms loginUrl="~/Account/LogOn" timeout="2880" cookieless="UseCookies" />
</authentication>
该代码段的关键部分是:
cookieless="UseCookies"

有一次我更新了网页。配置添加到Querystring消失,我能够观察到创建。aspxauth身份验证令牌使用chrome的开发人员工具。

为了完整起见,我添加了解释,下面是我最终找到答案的地方:

在iOS上使用Google Chrome浏览器在asp.net站点上进行FormsAuthentication

谢谢Scott Hanselman先生。

相关内容

  • 没有找到相关文章

最新更新