Ajax端点应该如何响应非Ajax请求


How should an Ajax endpoint respond to a non-ajax request?

我正在编写后端以响应ajax查询。我使用的是Codeigniter,我的控制器是由这些函数组成的。

public function name_change()
{
    if($this->input->is_ajax_request())
    {
        //Grab the Inputs
        //Do something
        //Respond
    }
    else
    {
    }           
}

我唯一的问题是,如果不是Ajax请求,我应该如何处理?没有理由让非ajax请求访问这些控制器函数。我能想到的选择是。

  • 不发送响应
  • 弹出一个错误页面(我想我会使用状态代码200或403)

黄金法则是永远不要信任用户输入

因此,无论数据是来自ajax请求,还是刚刚发送到函数,您的控制器都应该假设它受到了污染,并进行完全验证、用户身份验证等。

因此,如果有人最终没有收到ajax请求(无论是有意还是无意),这并不重要——所以如果他们提交的数据是有效的,就让它通过。

如果没有,只需向客户抛出一条有用的错误消息(尤其是当他们意外到达那里时)。