【问题标题】:How to tell if a page is being called via Ajax, or on it's own如何判断页面是通过 Ajax 调用还是单独调用
【发布时间】:2012-04-07 09:02:30
【问题描述】:

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

【问题讨论】:

标签: php jquery ajax


【解决方案1】:

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

X-Requested-With: XMLHttpRequest

在 PHP 中,使用以下命令检查此标头是否存在:

$_SERVER['HTTP_X_REQUESTED_WITH']

【讨论】:

  • PHP 具体可以查看$_SERVER['HTTP_X_REQUESTED_WITH']
  • 这不适用于 PHP 7.1.11 和最新的 Chrome 浏览器,截至 1 月 18 日
【解决方案2】:

您永远不能相信客户及其发送的信息! 标头可以被黑客欺骗(例如使用 cURL),甚至 HTTP_X_REQUESTED_WITH 也不可靠。没有 100% 可信的方法可以知道这一点。 唯一的方法是使用验证码...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-15
    • 1970-01-01
    相关资源
    最近更新 更多