提问人:Ricky Supit 提问时间:11/25/2008 最后编辑:showdevRicky Supit 更新时间:6/6/2021 访问量:118981
如何从服务器端获取 Url Hash (#)
How to get Url Hash (#) from server side
答:
那是因为浏览器没有将该部分传输到服务器,对不起。
[RFC 2396][1] 第 4.1 节:
当 URI 引用用于对 identified resource,可选的片段标识符,与 通过交叉影线 (“#”) 字符的 URI 由附加的 用户代理在 检索操作已成功完成。因此,事实并非如此 URI 的一部分,但通常与 URI 结合使用。
(着重号后加) [1]:https://www.rfc-editor.org/rfc/rfc2396#section-4
评论
可能唯一的选择是在客户端读取它并手动将其传输到服务器 (GET/POST/AJAX)。 问候 阿图尔
您还可以在 Malcan 上看到如何使用后退按钮和浏览器历史记录进行游戏
只是为了排除您实际上没有尝试在 GET/POST 上查看片段并且实际上想知道如何访问服务器端代码中 URI 对象的那部分的可能性,它位于 Uri.Fragment(MSDN 文档)下。
评论
我们遇到过这样的情况,我们需要在回发 ASP.Net 保留 URL 哈希。由于浏览器默认不会将哈希发送到服务器,因此唯一的方法是使用一些 Javascript:
当表单提交时,抓取哈希值()并将其存储在服务器端隐藏输入字段中,将其放入ID为“”的DIV中,以便我们以后可以轻松找到它。
window.location.hash
urlhash
在服务器上,如果需要对它执行某些操作,可以使用此值。如果需要,您甚至可以更改它。
在客户端上加载页面时,检查此隐藏字段的值。您将希望通过它所包含的 DIV 找到它,因为自动生成的 ID 是未知的。是的,你可以在这里做一些诡计。ClientID,但我们发现只使用包装器 DIV 更简单,因为它允许所有这些 Javascript 存在于外部文件中并以通用方式使用。
如果隐藏的输入字段具有有效值,请将其设置为 URL 哈希 () 和/或执行其他操作。
window.location.hash again
我们使用 jQuery 来简化字段的选择,等等......总而言之,它最终是几个jQuery调用,一个用于保存值,另一个用于恢复它。
提交前:
$("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()
评论
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");
}
}
评论