仅由AJAX调用的控制器方法是私有的吗?

时间:2011-07-02 07:16:50

标签: ajax codeigniter

我的控制器上有方法,例如forgot_passwordlogin等。

这些只能通过AJAX调用,但默认情况下,由于CI的工作方式,您可以通过URL浏览它们。

我可以以某种方式将它们设为私有并仍然通过AJAX访问它们吗?这里做了什么?

2 个答案:

答案 0 :(得分:17)

此处的最佳做法是使用$this->input->is_ajax_request()

if(! $this->input->is_ajax_request()) {
    redirect('404');
}

答案 1 :(得分:1)

如果你想测试ajax请求,这样的事情可能会有所帮助。

编辑:CI中有一个辅助函数来检测ajax请求。 答案已过时

if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH']=="XMLHttpRequest") 
{
// most probably ajax request
}
else
{
   echo "not sure";     
}