我想检测/阻止/转发外部访问者的直接请求。有些脚本应该只显示在 jQuery 对话框中。
我当前的代码:
<script>
$(".dialog").click(function() {
// some code for validation
// ...
$("#dialog").load(this.href).dialog();
});
</script>
<a href="http://domain.de/path/to/form/" class="dialog">Open me in a dialog</a>
效果很好,但是如果我在新的选项卡/窗口中打开此链接(例如,通过单击鼠标中键),表单将显示为“裸”。
在这种情况下,我想将用户转发到引用的页面,例如:
if ($requester != $server) {
header ("Location: " . $_SERVER["HTTP_REFERER"];
}
如何检测 $requester 和 $server?我不想阻止每个脚本或整个目录!
提前致谢!
最佳答案
添加@Dharman 的建议
jQuery 向其所有名为 HTTP_X_REQUESTED_WITH
的 ajax 请求添加一个 header ,因此您可以简单地在 $_SERVER
全局数组中检查此 header 。
例子:
if($_SERVER['HTTP_REFERER']!=$_SERVER["HTTP_HOST"].$_SERVER["REQUEST_URI"])
{
// check if the request is ajax
if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) &&
$_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest' ){
// ajax content loading
}
header ("Location: index.php");
}
关于PHP:如何检测外部访问者的直接请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13895543/