如何判断页面是通过Ajax调用还是通过它自己调用

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

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

页面是php页面,所以我也可以访问它。

指数:

goto = "StandalonePrograms.php"; var clear = "
" 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也不可靠。 没有100%可靠的方式来了解这一点。 唯一的方法是使用validation码……