【问题标题】:Internet Explorer, Safari, Opera removes hash value from returnUrlInternet Explorer、Safari、Opera 从 returnUrl 中删除哈希值
【发布时间】:2011-12-03 00:13:13
【问题描述】:

当用户被发送到 LogOn 控制器时,我想在 returnURL 中保留哈希值,但 IE7-9/Safari/Opera 将其删除。

例如,我试试这个网址

http://localhost:18314/#&t={DA3DB617-F9A3-4668-93E6-BBB2E37B928F}

用户未被授权并被发送到登录控制器。我在 IE7-9、Safari、Opera 中得到了这个:

http://localhost:18314/Login/LogOn?ReturnUrl=%2f

但在 FireFox 和 Chrome 中:

http://localhost:18314/Login/LogOn?ReturnUrl=%2f#&t={DA3DB617-F9A3-4668-93E6-BBB2E37B928F}

为什么以及如何解决?!

谢谢! :-)

【问题讨论】:

    标签: model-view-controller hash authorization returnurl


    【解决方案1】:

    您必须使用 %23 转义散列

    所以这个:

    ?ReturnUrl=%2fFolder1#Hash
    

    变成:

    ?ReturnUrl=%2fFolder1%23Hash
    

    在 IE9 中测试。

    【讨论】:

      【解决方案2】:

      哈希后的所有内容都不会发送到服务器。 好消息是您可以在客户端代码和服务器代码之间共享 cookie。 我遇到了同样的问题,最终将我的哈希值添加到一个 cookie 中

      // Note that I am using 3rd part library for cookies
      <script src="~/scripts/jquery-1.10.2.js"></script>
      <script src="~/scripts/jquery.cookie.js"></script>
      <script type="text/javascript">
          $(function () {
              var cookieKey = "MYHASH";
              $.removeCookie(cookieKey);
              $.cookie(cookieKey, window.location.hash, { expires: 7, path: '/' });
          })
      </script>
      

      稍后,当我在控制器值 Request.Cookies["MYHASH"]; 中处理连接用户时 会给我哈希值,所以我可以重定向用户。我相信通过一些修改可以帮助您解决问题。

      【讨论】:

        猜你喜欢
        • 2014-09-08
        • 2012-12-10
        • 2015-11-17
        • 2016-01-06
        • 2023-04-09
        • 2017-11-02
        • 1970-01-01
        • 1970-01-01
        • 2021-05-25
        相关资源
        最近更新 更多