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


How to tell if a page is being called via Ajax, or on it's own

我有一个通过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());
                });
            }
        });
    }

当使用XMLHttpRequest对象进行请求时,现代浏览器会添加以下请求标头:

X-Requested-With: XMLHttpRequest

在PHP中,使用检查此标头的存在

$_SERVER['HTTP_X_REQUESTED_WITH']

您永远不能信任客户端及其发送的信息!标头可能会被黑客欺骗(例如使用cURL),甚至HTTP_X_REQUESTED_with也不可靠。要知道这一点,没有百分之百可靠的方法。唯一的方法是使用captcha。。。