我正在编写后端以响应ajax查询。我正在使用Codeigniter,而我的控制器是由这些功能组成的。Ajax端点应该如何响应非ajax请求?
public function name_change()
{
if($this->input->is_ajax_request())
{
//Grab the Inputs
//Do something
//Respond
}
else
{
}
}
我唯一的问题是我该如何处理它不是Ajax请求的情况?没有理由认为这些控制器函数应该被非Ajax请求访问。我能想到的选项是。
- 发送无响应
- 抛出了一个错误页面(我想我会用状态码200或403)
首先问自己:“那又怎样?”如果没有安全措施被绕过,资金丢失或数据被写入,那么它可能无关紧要,如果它是一个AJAX连接或没有。 – Blazemonger
注意:CodeIgnitor的is_ajax_request()方法只是检查HTTP头HTTP_X_REQUESTED_WITH是否指示它是通过xmlhttprequest发送的,因此很容易被欺骗......并且在开发期间您可能想要通过(REST?)端点来访问浏览器地址栏只是为了测试。例如要小心在这个“可疑”方法基础上有多少逻辑。 – scunliffe
我自己经常想到这一点 - 我只是渲染一个自定义的404视图,但我想过用Apache来捕捉它,以减少CodeIgniter调用的数量,从而减少内存。我很想看到像这样的解决方案。 –