【发布时间】:2012-09-14 16:59:28
【问题描述】:
我正在编写后端以响应 ajax 查询。我正在使用 Codeigniter,而我的控制器由这些函数组成。
public function name_change()
{
if($this->input->is_ajax_request())
{
//Grab the Inputs
//Do something
//Respond
}
else
{
}
}
我唯一的问题是我应该如何处理不是 Ajax 请求的情况?没有理由让非 ajax 请求访问这些控制器功能。我能想到的选项是。
- 不发送响应
- 抛出一个错误页面(我假设我会使用状态码 200 或 403)
【问题讨论】:
-
首先问自己:“那又怎样?”如果没有绕过安全措施、丢失金钱或写入数据,那么它是否是 AJAX 连接可能并不重要。
-
注意:CodeIgnitor
is_ajax_request()方法只检查 HTTP 标头HTTP_X_REQUESTED_WITH是否表明它是通过 xmlhttprequest 发送的,因此很容易被欺骗......并且在开发过程中您可能想要访问 ( REST?) 端点通过浏览器地址栏进行测试。例如小心你基于这种“有问题”的方法有多少逻辑。 -
我自己也经常想知道这一点——我只是渲染了一个自定义的 404 视图,但我考虑过用 Apache 捕获它以减少 CodeIgniter 调用的数量,从而减少内存。我很想看到这样的解决方案。
-
@JordanArseno 我想知道扔一个 404 但不确定这是否合适。
-
我会使用重定向到控制器索引并让它刷新页面
标签: php ajax codeigniter jquery