zoukankan      html  css  js  c++  java
  • IE10下 FormsAuthentication.SetAuthCookie无效的问

      问题是这样的,我在本地测试设置身份验证票据都没问题,发布到服务器后访问地址添加了一些特殊的字符,看起来像加过密的,如下:

    http://www.example.com/(F(1xe9eXIxPzMALrZu6xd_xiccanJf4m0bo0ceEJ70Mv20XYaMSlA2))/some/path

    正常的地址应该是:

    http://www.example.com/some/path

      我的测试环境为:win7 64位、IE10

      服务器上的IE8测试也有问题,具体环境:Windows Server 2003 64位、IE8

      在这两个环境下访问都无法产生正常的URL

    很奇怪的问题,困扰了我很久,之前出过现过一次,后来代码重新发布了一遍,居然自己就好了,今天又碰到了,所以决定彻底解决一下,最后写了一个很简单的例子来做测试后,得出是 FormsAuthentication.SetAuthCookie设置身份验证票据无法写入Cookie,测试的代码:

    FormsAuthentication.SetAuthCookie("1", false);
    Response.Redirect("Default.aspx");

    最后了解到这些特殊字符其实就是身份验证票据,由于客户端不接收Cookie,所以Asp.net中把Cookie信息写入了地址栏,参考微软的身份验证票据原理,了解了原因之后该如何解决呢,最后Google中找到了答案:

    这是IE10的一个bug或者说是asp.net 4的一个Bug,在IE10里更改了http头,这样导致asp.net 4认为客户端没有启用cookie,会导致验证失败。
    简单的解决方法是,在网站根目录,新增一个浏览器定义文件(browser definition file)
    步骤如下:
      1.添加一个"App_Browsers"文件夹
      2.添加一个"*.browser"后缀的文件,如IE10.browser.
      3.添加文件内容如下:
      <browsers>
        <browser refID="Default">
          <capabilities><!-- To avoid wrong detections of e.g. IE10 -->
          <capability name="cookies" value="true" />
          <capability name="ecmascriptversion" value="3.0" />
          </capabilities>
        </browser>
      </browsers>

    参考文章:http://www.cnblogs.com/79039535/p/3335121.html

  • 相关阅读:
    [FJOI2007]轮状病毒
    [SHOI2013]发微博
    ATCODER ABC 099
    [HEOI2015]兔子与樱花
    [TJOI2017]可乐
    [TJOI2015]线性代数
    [Ceoi2008]order
    [CTSC2008]祭祀river
    [POI2009]Lyz
    数列分块(数据结构)学习笔记
  • 原文地址:https://www.cnblogs.com/myssh/p/3489821.html
Copyright © 2011-2022 走看看