当用户被发送到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}
为什么以及如何修复?!
谢谢! : - )
答案 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”]中处理连接用户时; 会给我哈希值,所以我可以重定向用户。我确信通过一些修改可以帮助您解决问题。