如何检查请求是否通过CodeIgniter中的AJAX进行?

如何检查请求是否是AJAX? 我正在使用CodeIgniter。 我有一个链接,当它点击时,它会打开弹出对话窗口,这是通过ajax向控制器名称login_window()请求的。

//Here is the controller name:
function login_window(){
    // request via ajax
    $this->load->view("login_window");
}

jQuery的

//here is the jquery code:
//I am using a jquery plugin FACEBOX

$('a[rel*=dialog]').facebox();

<a href="http://localhost/codeigniter/login_window" rel="dialog">Login</a>

我想检查它是否是AJAX请求,如果不是,我会将它们重定向到主页。 所以他们无法访问仅用于Ajax请求的页面。


如果您正在使用发送X-Requested-With标头的库,那么您可以这样做...

if (strtolower(filter_input(INPUT_SERVER, 'HTTP_X_REQUESTED_WITH')) === 'xmlhttprequest') {
   // I'm AJAX!
}

至于Codeigniter 2.0,最好使用$this->input->is_ajax_request()


我认为你基本上是希望保护你的ajax API不被用户直接访问。 你希望用户能够在被你自己的代码(javascript等)调用时访问ajax api,但如果用户试图直接点击api,则应该被拒绝访问。

如果你仍然在寻找一个完美的解决方案(HTTP_X_REQUESTED_WITH并不总是可靠的,因为你的库可能不支持这一点,即使它可能会被代理剥离,如果用户在一个后面)尝试使用面包屑来保护你的ajax API。 面包屑用于流量验证,确保用户通过预定义/预先决定的流程访问API,而不是直接访问API。

链接地址: http://www.djcxy.com/p/57621.html

上一篇: How do I check if the request is made via AJAX in CodeIgniter?

下一篇: The difference between 'and' and '&&' in php