Internet Explorer,Safari,Opera从returnUrl中删除哈希值

时间:2011-10-07 12:59:58

标签: model-view-controller hash authorization returnurl

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

例如,我试试这个网址

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

用户未经授权并已发送至LogOn控制器。我在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}

为什么以及如何修复?!

谢谢! : - )

2 个答案:

答案 0 :(得分:1)

您必须使用%23

转义哈希值

所以这个:

?ReturnUrl=%2fFolder1#Hash

变为:

?ReturnUrl=%2fFolder1%23Hash

在IE9中测试过。

答案 1 :(得分:1)

散列后的所有内容都不会发送到服务器。 好的是,您可以在客户端代码和服务器代码之间共享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”]中处理连接用户时; 会给我哈希值,所以我可以重定向用户。我确信通过一些修改可以帮助您解决问题。