仅对ajax进行操作,并阻止直接访问url

时间:2011-03-10 09:18:46

标签: php zend-framework

我有一个只能通过ajax访问的操作。当有人直接以http://site.com/controller/action的身份访问网址时,如何让它显示空白? Zend有没有办法判断它是ajax调用还是直接url访问?

编辑:我发现了Zend的$this->getRequest()->isXmlHttpRequest(),但我想知道这是否足够可信?

2 个答案:

答案 0 :(得分:4)

没有办法可靠地告诉AJAX请求和任何其他类型的请求,所以不能阻止非AJAX访问。

答案 1 :(得分:1)

如果你正在使用jQuery,你可以检查它:

if(empty($_SERVER['HTTP_X_REQUESTED_WITH']) || strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest') {
    return die('No direct access allowed.');
}