Kohana如何确定请求是否是AJAX?
引荐来源字符串有什么不同吗?我是否需要添加GET参数,可能是?ajax=true
?
答案 0 :(得分:8)
它检查请求是否由XMLHttpRequest发出,因为大多数浏览器在这种情况下发送带有此指示的标头:标头HTTP_X_REQUESTED_WITH
将设置为XMLHttpRequest
。
答案 1 :(得分: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');
}
答案 2 :(得分:1)
Necro发布,因为这首先是我的谷歌搜索。
Dunno如果Kohana仍然以这种方式工作,但使用HTTP_X_REQUESTED_WITH不再是最佳做法。
Ajax请求 - 实际上所有HTTP请求 - 应该发送“Accept”标头。
任何服务器端进程都应检查“Accept”标头,以确定要响应的内容。在PHP中执行此操作的一种方法是:
function is_ajax() {
return $_SERVER['HTTP_ACCEPT'] == 'application/json';
}