Andreas Korthaus: "403 Forbidden" bei fsockopen() + fputs(GET / HTTP/1.0)

Beitrag lesen

Hi!

Ich rate einfach mal ins Blau hinein, dass Du einen Request an / sendest, dieser Server aber kein Directory-Listing erlaubt und nicht automatisch auf eine andere Datei wie index.html weiterleitet.

Das habe ich mir auf dem Heimweg dann auch überlegt - ich war heute Mittag wohl einfach schon zu verbohrt um noch klar zu denken ...

Nein, ich glaube eher Svens Version ist die richtige, daran hatte ich nicht gedacht.

Öffne mal genau den Request-String über den Browser, was passiert da genau? Bleibt der unverändert in der Adresszeile?

Nein, bei der Adresse die das Problem verursacht bzw. bei der es aufgefallen ist, liegt die eigentliche Webpräsenz in einem Unterordner. Die Startdatei (default.html) wird überhaupt nicht angezeigt und scheint lediglich die Weiterleitung zu enthalten.

Ja, aber wenn eine Weiterleitung gekommen wäre hättest Du das mit Deinem PHP-Script auch merken müssen, denn dann hätte irgendwas mit 200 oder 3xx zurückkommen müssen.

Und wenn as nicht hilft überprüfe mit Ethereal was genau Dein Rechner sendet und was genau der andere Server antwortet.

Werde ich versuchen.

Aber was, wenn es wirklich nur am Directory-Listing ohne Weiterleitung auf die Startdatei liegt (was ich inzwischen vermute)??? Wie kann ich verhindern, dass bei jedem Prüflauf des Moduls solche URLs als fehlerhaft gekennzeichnet werden?

Dieses Problem kannst Du dadurch vermeiden dass Du wirklich nur gültige Resourcen abfragst. Du musst jedesmal die URL finden, die den Statuscode 200 zurückgibt, die wird es immer geben, denn sonst könnte der Browser nichts anzeigen, in diesen Sonderfällen kann es halt sein dass es sich hierbei nicht um / oder /index.html handelt, sondern ggfs. ganz was anderes. Du könntest darüber hinaus noch Location-Headern bei 3xx Statuscodes folgen die Dich auf eine andere Adresse verweisen folgen, oder irgendwelche anderen Aktionen auslösen (Dich benachrichtigen...)

Aber vermutlich wird das Senden eines Host-Headers das Problem lösen, wie Sven schon sagte.

Grüße
Andreas