Php 如何判断页面是通过Ajax调用的,还是在其上调用的';他自己的

Php 如何判断页面是通过Ajax调用的,还是在其上调用的';他自己的,php,jquery,ajax,Php,Jquery,Ajax,我有一个页面可以通过Ajax加载其他页面(想想框架,除了没有框架) 显然,这些页面都可以独立调用,因此我想检测它们是否通过Ajax被调用,如果不是,则重定向到主Ajax页面 这些页面是php页面,因此我也可以访问这些页面 索引: goto = "StandalonePrograms.php"; var clear = "<br style='clear:both;'>" if(goto != ''){ $.ajax({

我有一个页面可以通过Ajax加载其他页面(想想框架,除了没有框架)

显然,这些页面都可以独立调用,因此我想检测它们是否通过Ajax被调用,如果不是,则重定向到主Ajax页面

这些页面是php页面,因此我也可以访问这些页面

索引:

    goto = "StandalonePrograms.php";
    var clear = "<br style='clear:both;'>"
    if(goto != ''){
        $.ajax({
            url: goto,
            context: document.body,
            success: function(data){
                $('#mainwindow').html(data + clear);
                $('#mainwindow').find("script").each(function(i){
                    eval($(this).text());
                });
            }
        });
    }
goto=“StandalonePrograms.php”;
var clear=“
” 如果(转到!=“”){ $.ajax({ 网址:goto, 上下文:document.body, 成功:功能(数据){ $('#主窗口').html(数据+清除); $(“#主窗口”).find(“脚本”).each(函数(i){ eval($(this.text()); }); } }); }
当使用
XMLHttpRequest
对象发出请求时,现代浏览器会添加以下请求头:

X-Requested-With: XMLHttpRequest
在PHP中,使用以下命令检查此标头是否存在:

$_SERVER['HTTP_X_REQUESTED_WITH']

您永远不能信任客户及其发送的信息! 这些头文件可能被黑客欺骗(例如使用cURL),甚至HTTP_X_请求的_也不可靠。没有100%可信的方法知道这一点。
唯一的方法是使用captcha…

查看所选答案,让AJAX请求使用特殊的查询字符串调用页面。它不是万无一失的,但可能已经足够好了。对于PHP,可能会有重复。具体来说,您可以检查
$\u服务器['HTTP\u X\u REQUESTED\u WITH']
。从1月18日起,这不适用于PHP7.1.11和任何最新的Chrome浏览器