Model view controller Internet Explorer、Safari、Opera从返回URL中删除哈希值

Model view controller Internet Explorer、Safari、Opera从返回URL中删除哈希值,model-view-controller,hash,authorization,returnurl,Model View Controller,Hash,Authorization,Returnurl,当用户被发送到登录控制器时,我想在returnURL中保留哈希值,但IE7-9/Safari/Opera将其删除 例如,我尝试使用这个URL {DA3DB617-F9A3-4668-93E6-BBB2E37B928F} 用户未被授权并发送到登录控制器。我在IE7-9、Safari、Opera中看到了这一点: 但在FireFox和Chrome中: {DA3DB617-F9A3-4668-93E6-BBB2E37B928F} 为什么以及如何修复 谢谢!:-) 您必须使用%23对哈希进行转义 因此:

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

例如,我尝试使用这个URL

{DA3DB617-F9A3-4668-93E6-BBB2E37B928F}

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

但在FireFox和Chrome中:

{DA3DB617-F9A3-4668-93E6-BBB2E37B928F}

为什么以及如何修复


谢谢!:-)

您必须使用%23对哈希进行转义

因此:

?ReturnUrl=%2fFolder1#Hash
变成:

?ReturnUrl=%2fFolder1%23Hash

在IE9中测试。

哈希后的所有内容都不会发送到服务器。 好消息是,您可以在客户端代码和服务器代码之间共享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>
//注意,我正在使用第三部分库进行cookie
$(函数(){
var cookieKey=“MYHASH”;
$.removeCookie(cookieKey);
$.cookie(cookieKey,window.location.hash,{expires:7,path:'/'});
})
稍后,当我在控制器值请求中处理连接的用户时; 将给我哈希值,以便我可以重定向用户。我相信经过一些修改,这可以帮助您解决问题