我已经使用CodeIgniter创建了一个webapp。我在应用程序中的几个地方都使用了ajax。
我想知道是否有一种方法可以停止对ajax控制器的直接访问和查询,并且仅允许处理源自页面的合法ajax请求。
谢谢。
是的,您可以毫无问题地做到这一点。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()!
function __construct()
编辑:至于“从页面开始”,您可能应该对ajax请求进行身份验证+安全检查(可能通过会话进行操作,这样您就不会访问数据库了)。因此,与您的Web应用程序无关的流氓用户无论如何都不应该手动发送ajax请求。希望这能回答您的问题。