我一直在使用jQuery UI Tab组件,并已成功实现通过ajax为每个选项卡加载内容。每个选项卡都调用一个带有get变量的公共php页面,然后由公共页面进行解析以识别和回显页面内容。
我遇到的问题是阻止用户直接链接到这个常见的php页面,这会将页面内容加载到选项卡外的空白浏览器窗口中。我已经尝试检测$ _SERVER [“HTTP_REFERER”]仅在来自远程站点时加载内容,但这有几个缺点,即后退按钮和本地页面链接。肯定有一种更清洁的方式。
希望我遗漏一些简单的东西,但是如何强制在给定页面的标签中查看ajax内容,而不是回避标签?
由于
答案 0 :(得分:2)
你无法100%停止它,但是你可以通过以下方式阻止大多数人进行非ajax访问:
if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
// it's an ajax request
}
请记住,标题可能很容易被欺骗,因此这绝不是安全的,但它会处理大多数请求。