Wie funktioniert Request :: is_ajax () in Kohana?
Frage
Wie stellt Kohana fest, ob eine Anfrage ein Ajax ist?
Gibt es etwas anderes in der Referrer -Zeichenfolge? Muss ich vielleicht einen Get -Param hinzufügen? ?ajax=true
?
Lösung
Es wird überprüft, ob die Anfrage von XMLHTTPREQUEST gestellt wird HTTP_X_REQUESTED_WITH
würde auf eingestellt sein auf XMLHttpRequest
.
Andere Tipps
Ab 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');
}
Necro-Posting, weil dies zuerst meine Google-Suche aufging.
Dunno, wenn Kohana noch so funktioniert, aber mit http_x_requested_with ist nicht mehr die beste Praxis mehr.
AJAX -Anfragen - alle HTTP -Anfragen - sollten einen "Akzeptieren" -Header senden.
Jeder serverseitige Prozess sollte den Header "Akzeptieren" untersuchen, um zu bestimmen, welche Inhalte als Antwort gesendet werden sollen. Eine Möglichkeit, dies in PHP zu tun, ist:
function is_ajax() {
return $_SERVER['HTTP_ACCEPT'] == 'application/json';
}