Model view controller Internet Explorer、Safari、Opera从返回URL中删除哈希值
当用户被发送到登录控制器时,我想在returnURL中保留哈希值,但IE7-9/Safari/Opera将其删除 例如,我尝试使用这个URL {DA3DB617-F9A3-4668-93E6-BBB2E37B928F} 用户未被授权并发送到登录控制器。我在IE7-9、Safari、Opera中看到了这一点: 但在FireFox和Chrome中: {DA3DB617-F9A3-4668-93E6-BBB2E37B928F} 为什么以及如何修复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对哈希进行转义 因此:
谢谢!:-) 您必须使用%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:'/'});
})
稍后,当我在控制器值请求中处理连接的用户时;
将给我哈希值,以便我可以重定向用户。我相信经过一些修改,这可以帮助您解决问题