request::is_ajax() 在 Kohana 中如何工作?
题
Kohana 如何确定请求是否是 AJAX 请求?
引用字符串中有什么不同吗?我是否需要添加一个 GET 参数? ?ajax=true
?
解决方案
它检查请求是否由 XMLHttpRequest 发出,因为大多数浏览器在这种情况下都会发送带有以下指示的标头:标头 HTTP_X_REQUESTED_WITH
将被设置为 XMLHttpRequest
.
其他提示
从 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');
}
死灵发布,因为这是我的谷歌搜索首先出现的。
不知道 Kohana 是否仍然以这种方式工作,但使用 HTTP_X_REQUESTED_WITH 不再是最佳实践。
Ajax 请求(实际上是所有 HTTP 请求)应该发送一个“Accept”标头。
任何服务器端进程都应该检查“Accept”标头以确定要发送哪些内容作为响应。在 PHP 中执行此操作的一种方法是:
function is_ajax() {
return $_SERVER['HTTP_ACCEPT'] == 'application/json';
}
不隶属于 StackOverflow