Zur Navigation

Ajax: auf X-Requested-With Header verlassen?

1 webDeveloper001

Hallo,

wenn ich auf einer Website Content per Ajax statt normalem Request laden will, wenn JavaScript verfügbar ist, dann nutze ich normalerweise /ajax/foo/bar (mittels Mod Rewrite) um den Content für /foo/bar zu laden.
Auf einer Website habe ich jetzt gesehen, dass dort für beide Arten nur eine URL aufgerufen wird und der Server dann je nachdem ob der Header "X-Requested-With: XMLHttpRequest" gesendet wird oder nicht entweder die komplette Seite "von <html> bis </html>" oder nur den entsprechenden Content zurückgibt.
Mich interessiert jetzt, ob diese Möglichkeit als Alternative für zusätzliche Ajax-URLs üblich ist bzw. ob man sich darauf verlassen kann, dass auch jeder Browser bei einem Ajax-Request den "X-Requested-With" Header mitsendet?

Gruß
webDeveloper001

14.03.2014 17:33

2 Jörg

Zitat von webDeveloper001
Mich interessiert jetzt, ob diese Möglichkeit als Alternative für zusätzliche Ajax-URLs üblich ist

Das Zend-Framework wertet diesen Header serverseitig aus:

Zitat von Zend Manual
Zend_Controller_Request_Http hat eine rudimentäre Methode für die Erkennung von AJAX-Anfragen: isXmlHttpRequest(). Diese Methode sucht nach einem HTTP-Anfrageheader X-Requested-With mit dem Wert 'XMLHttpRequest'; wenn er gefunden wird, gibt er TRUE zurück.

Quelle: http://framework.zend.com/manual/1.12/de/zend.controller.request.html#zend.controller.request.http.ajax

Zitat von webDeveloper001
ob man sich darauf verlassen kann, dass auch jeder Browser bei einem Ajax-Request den "X-Requested-With" Header mitsendet?

Gesendet wird dieser HTTP-Header von verschiedenen JavaScript-Frameworks:

Zitat von Zend Manual
Aktuell wird dieser Header standardmäßig mit den folgenden JS-Bibliotheken geschickt:

Prototype und Scriptaculous (und von Prototype abgeleitete Bibliotheken)

Yahoo! UI Library

jQuery

MochiKit

Falls du keine dieser Bibliotheken einsetzt, musst du dich dann wohl selbst drum kümmern

14.03.2014 18:24

Beitrag schreiben (als Gast)





[BBCode-Hilfe]