"X-Requested-With" Header wird nicht erkannt

Abend,

ich habe viel gelesen, wie man die PHP-Datei, an die ein http-Request gesendet wird, vor einem direkten Zugriff schützen kann. Die beste Methode scheint mir diese zu sein, einen „X-Requested-With“ Header zu schicken unddann in der PHP-Datei abzufragen.

Das Problem ist nur, dass der Header zwar eindeutig geschickt wird…

http://img5.fotos-hochladen.net/uploads/20151112212qej8u9dwoh.png

…aber die Variable in der PHP-Datei scheint leer zu sein:

[PHP]if($_SERVER[‚X-Requested-With‘] != ‚XMLHttpRequest‘)
{
die(‚nicht erlaubt‘);
}[/PHP]

Der direkte Zugriff ist damit zwar verboten, aber meine JS-Dateien können auch nicht mehr darauf zugreifen. o_O

Versteh ich das richtig, dass die Variable $_SERVER[‚X-Requested-With‘] durch das Senden des Headers erzeugt wird? Oder hängt die Verfügbarkeit wirklich von der Server-Software ab, wie ich es auch schon gelesen habe?

Danke schon mal!

Soweit ich sehe müsste der Server diesen Header explizit erlauben:
http://stackoverflow.com/questions/8163703/cross-domain-ajax-doesnt-send-x-requested-with-header

Eigentlich ganz einfach, wenn man’s weiß :confused:

Die Variable in PHP lautet nicht:

[PHP]$_SERVER[‚X-Requested-With‘][/PHP]

sondern:

[PHP]$_SERVER[‚HTTP_X_REQUESTED_WITH‘][/PHP]

HTTP-Header bekommen immer noch den Präfix „HTTP_“ und alle Bindestriche werden durch Unterstriche ersetzt.

Und schon funktioniert es :slight_smile: