Ajax请求不对所有人开放

时间:2011-11-14 13:01:57

标签: ajax codeigniter-2

我使用CodeIgniter创建了一个webapp。有几个地方我在应用程序中使用ajax。

我想知道是否有一种方法可以阻止对ajax控制器的直接访问和查询,并且只允许处理来自页面的合法ajax请求。

感谢。

1 个答案:

答案 0 :(得分:5)

是的,你可以毫无问题地做到这一点。 CodeIgniter输入类有一个名为is_ajax_request()的方法。只需在控制器操作开始时检查这一点。例如:

function ajax_save() {
    if ($this->input->is_ajax_request()) {
        //continue on as per usual
    } else {
        show_error("No direct access allowed");
        //or redirect to wherever you would like
    }
}

如果您有完全为ajax调用指定的控制器,则可以将该if语句放入控制器的构造函数function __construct()中。记得先调用parent :: __ constructor()!

编辑:对于“源自页面”,您可能应该在ajax请求上进行身份验证+安全检查(可能通过会话,以便您不会访问数据库)。因此,与您的webapp无关的流氓用户无论如何都不能手动发送ajax请求。希望这能回答你的问题。