4

Kohana 如何确定请求是否为 AJAX 请求?

推荐人字符串有什么不同吗?我是否需要添加一个 GET 参数,也许?ajax=true

4

3 回答 3

8

它检查请求是否是由 XMLHttpRequest 发出的,因为在这种情况下,大多数浏览器都会发送一个带有此指示的标头:标头HTTP_X_REQUESTED_WITH将设置为XMLHttpRequest.

于 2009-07-11T15:16:57.710 回答
5

从 v2.3.4 开始

/**
 * Tests if the current request is an AJAX request by checking the 
 * X-Requested-With HTTP request header that most popular JS frameworks 
 * now set for AJAX calls.
 *
 * @return  boolean
 */

public static function is_ajax()
{
  return (isset($_SERVER['HTTP_X_REQUESTED_WITH']) AND 
          strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest');
}
于 2009-08-17T13:01:44.880 回答
1

Necro-posting 因为这首先出现在我的谷歌搜索中。

不知道 Kohana 是否仍然以这种方式工作,但使用 HTTP_X_REQUESTED_WITH 不再是最佳实践。

Ajax 请求——实际上是所有 HTTP 请求——应该发送一个“Accept”标头。

任何服务器端进程都应检查“Accept”标头以确定要发送哪些内容作为响应。在 PHP 中执行此操作的一种方法是:

  function is_ajax() {
    return $_SERVER['HTTP_ACCEPT'] == 'application/json';
  }
于 2013-10-25T18:00:13.833 回答