danOne: Frage zur verwendung von header("Location...");

Guten morgen an alle!

Da ich momentan sehr viel mit header("Location...); arbeite habe ich da mal eine Frage zur Verwendung:
Ich hab neulich irgendwo dokumentiert gelesen das man bei der angabe der Location immer den absoluten Pfad angeben soll (ich glaube ich habe das neulich auch mal hier im Forum gesehen). Aber warum habe ich nicht gefunden. Bei mir funktioniert das auch mit relativen Pfaden. Kann es dabei zu irgendwelchen Problemen kommen?

schönen Gruß

.dan.One.

  1. Hallo!

    Ich hab neulich irgendwo dokumentiert gelesen das man bei der angabe der Location immer den absoluten Pfad angeben soll (ich glaube ich habe das neulich auch mal hier im Forum gesehen). Aber warum habe ich nicht gefunden. Bei mir funktioniert das auch mit relativen Pfaden. Kann es dabei zu irgendwelchen Problemen kommen?

    Ja. Relative Pfade sind nicht standardkonform, wenn es klappt dann ist das Zufall, das kann nach einem Updatee im selben Programm auf einmal nichtmehr klappen.

    Siehe:
    http://www.dclp-faq.de/q/q-http-redirect.html
    http://de3.php.net/manual/de/function.header.php#AEN30218
    http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.30

    Grüße
    Andreas

  2. hi,

    Da ich momentan sehr viel mit header("Location...); arbeite habe ich da mal eine Frage zur Verwendung:
    Ich hab neulich irgendwo dokumentiert gelesen das man bei der angabe der Location immer den absoluten Pfad angeben soll (ich glaube ich habe das neulich auch mal hier im Forum gesehen).

    ja, steht z.b. auch im manual, http://www.php.net/manual/de/function.header.php

    Aber warum habe ich nicht gefunden.

    auch das steht im manual - weil die spezifikation von HTTP/1.1 es _verlangt_.

    Bei mir funktioniert das auch mit relativen Pfaden.

    das "funktioniert unter speziellen bedingungen" noch nie die folgerung "funktioniert immer, und ist richtig so" zuliess, sollte bekannt sein.

    Kann es dabei zu irgendwelchen Problemen kommen?

    ja.

    gruss,
    wahsaga

  3. Hi,

    Bei mir funktioniert das auch mit relativen Pfaden.

    Vorsicht! Diese "Argumentation" ist eine der gefährlichsten, die es überhaupt gibt. "Es funktioniert" ist absolut aussagefrei. Daraus auf die Korrektheit schließen zu wollen ist grundsätzlich ein schwerwiegender Fehler!

    Cheatah

    --
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. hi,
      ok dann lasst mich die frage anders formulieren:
      _warum_ kann es dabei zu problemen kommen. ich meine ich hab das jetzt auf 3 verschiedenen Servern getestet und es hat dort fuktioniert.Mir ist klar das ich damit keine aussage auf alle Server dieser Welt mache.
      Das es eine spezifikation von HTTP/1.1 ist, ist ja ok. Es würde mich halt einfach mal interessieren warum probleme auftreten können und von welcher Art diese dann sind (ich tippe an dieser stelle mal darauf das die weiterleitung schlicht nicht klappt).

      schönen Gruß
      .dan.One.

      1. hi,

        ok dann lasst mich die frage anders formulieren:
        _warum_ kann es dabei zu problemen kommen. ich meine ich hab das jetzt auf 3 verschiedenen Servern getestet und es hat dort fuktioniert.Mir ist klar das ich damit keine aussage auf alle Server dieser Welt mache.

        und selbst wenn du eine aussage "für alle server der welt" treffen könntest - die weiterleitung per location-header betrifft das zusammenspiel zwischen server und client - also ist der client ein ebenso entscheidendes kriterium.

        Das es eine spezifikation von HTTP/1.1 ist, ist ja ok. Es würde mich halt einfach mal interessieren warum probleme auftreten können

        weil ein client, der das httprotokoll version 1.1 so unterstützt, wie es nach vorgabe gemeint ist, auf deinen fehlerhaften header mit einem fehler reagieren kann/muss/darf ...

        und von welcher Art diese dann sind (ich tippe an dieser stelle mal darauf das die weiterleitung schlicht nicht klappt).

        ja, aber das dürfte doch wohl als argument ausreichen, oder?
        du willst eine weiterleitung machen, und es kann sein, dass sie so wie du sie machst, nicht funktionieren wird.

        wenn mir bekannt ist, wie ich sicherstellen kann, dass sie mit allen client-server-kombinationen, die http/1.1 korrekt unterstützen, funktionieren wird - dann stellt sich doch eigentlich die frage gar nicht mehr, ob ich es so mache oder nicht.

        gruss,
        wahsaga

      2. Hi,

        _warum_ kann es dabei zu problemen kommen.

        weil der technische Standard es nicht erlaubt.

        Das es eine spezifikation von HTTP/1.1 ist, ist ja ok. Es würde mich halt einfach mal interessieren warum probleme auftreten können und von welcher Art diese dann sind (ich tippe an dieser stelle mal darauf das die weiterleitung schlicht nicht klappt).

        Ein technischer Standard ist dazu da, eine Grundlage zu liefern, auf die man sich verlassen kann - können muss. Davon abzuweichen _kann_ nicht nur zu Problemen führen, sondern tut es. Die Bandbreite reicht von "geht im Einzelfall schief" bis "führt zu irreparablen Schäden".

        Cheatah

        --
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
      3. Hallo danOne,

        _warum_ kann es dabei zu problemen kommen.

        Wenn Du etwas bekommst, dann solltest Du so liberal wie möglich interpretieren. Du kannst Dich beim Senden jedoch *nicht* darauf verlassen, dass Dein Gegenüber es genauso tut! Daher: Wenn Du etwas sendest, solltest Du Dich immer so strikt wie möglich an den Standard halten.

        Es würde mich halt einfach mal interessieren warum probleme auftreten können

        Wenn jemand eine Software schreibt, die sich an den Standard hält, muss diese keine relativen URIs akzeptieren. Wenn Du z.B. per PHP eine Webseite per fopen öffenst (fopen ("http://www.test/", "r")) und diese Webseite hat eine Weiterleitung mit *relativer* URI, dann wird PHP versagen. (zumindest die Versionen, die ich getestet habe, ob das inzwischen funktioniert, weiß ich nicht) Bei absoluter URI liefert PHP die Seite, auf die verwiesen wird. Wichtig: Hierbei reagiert PHP als Client und verhält sich korrekt!

        und von welcher Art diese dann sind (ich tippe an dieser stelle mal darauf das die weiterleitung schlicht nicht klappt).

        Ja.

        Mir stellt sich bei dieser Diskussion die Frage, was für ein Sinn sie überhaupt macht. Der Standard schreibt eine absolute URI vor; man ist auf der sicheren Seite, wenn man eine absolute URI verwendet - wo ist dann das Problem? Faulheit?

        Viele Grüße,
        Christian