我知道在客户端(javascript)中,你可以使用windows.location.hash来访问,但是找不到任何从服务器端访问的方法。 我正在使用asp.net。
我知道在客户端(javascript)中,你可以使用windows.location.hash来访问,但是找不到任何从服务器端访问的方法。 我正在使用asp.net。
window.location.hash
) 并将其存储在服务器端的隐藏输入字段中。将其放入 id 为 "urlhash
" 的 DIV 中,以便稍后可以轻松找到。window.location.hash
) 和/或执行其他操作。$("form").submit(function() {
$("input", "#urlhash").val(window.location.hash);
});
在页面加载时:
var hashVal = $("input", "#urlhash").val();
if (IsHashValid(hashVal)) {
window.location.hash = hashVal;
}
IsHashValid()
可以检查 "undefined
" 或其他你不想处理的内容。
当然,还要确保适当使用 $(document).ready()
。
[RFC 2396][1]第4.1节:
当使用URI引用执行检索操作时,可选的片段标识符由井号(“#”)字符与URI分开,并包含了附加的参考信息在成功完成检索操作之后由用户代理解释。 因此,它不是URI的一部分,但通常与URI一起使用。
(强调添加) [1]: https://www.rfc-editor.org/rfc/rfc2396#section-4
那是因为浏览器不会将那部分内容传输给服务器,抱歉。
仅仅为了排除你并非真正想要在GET/POST请求中查看片段的可能性,而是想知道如何在服务器端代码中访问URI对象的该部分,它位于Uri.Fragment下 (MSDN文档)。
GET请求的可能解决方案:
新链接格式:http://example.com/yourDirectory?hash=video01
在控制器顶部或http://example.com/yourDirectory/index.php
调用此函数:
function redirect()
{
if (!empty($_GET['hash'])) {
/** Sanitize & Validate $_GET['hash']
If valid return string
If invalid: return empty or false
******************************************************/
$validHash = sanitizeAndValidateHashFunction($_GET['hash']);
if (!empty($validHash)) {
$url = './#' . $validHash;
} else {
$url = '/your404page.php';
}
header("Location: $url");
}
}