Horst Reinelt: URL-Syntax: Was ist "erlaubt"?

Hallo Forum, hallo Leute,
hier mal eine Frage zum Thema URL-Syntax:

Ist die Kombination aus dieser URL (Beispiel)
http://www.beispiel.de/cgi-bin/index.cgi?x=1&y=2
und einem seiteninternen Linkziel mit dem Syntax
<a href="#ankername">
eigentlich erlaubt, und wenn ja, wie müsste der dann aussehen?

Der IE (5.0) macht daraus
1: http://www.beispiel.de/cgi-bin/index.cgi?x=1&y=2#ankername
und zeigt eine solche Seite absolut korrekt an.
Beim NN (4.7) wird daraus allerdings
2: http://www.beispiel.de/cgi-bin/index.cgi?x=1&y=2#ankername?x=1&y=2
obwohl er (NN) die Seite an sich wie im IE korrekt anzeigt (wenn manuell eingegeben wie bei 1:).

Momentan sehe ich nur die Möglichkeit statt
<a href="#ankername">
den Tag so
<a href="http://www.beispiel.de/cgi-bin/index.cgi?x=1&y=2#ankername">
zu schreiben, um das Problem zu umgehen.

Kombiniere ich in anderer Reihenfolge:
http://www.beispiel.de/cgi-bin/index.cgi#ankername?x=1&y=2
sendet der IE die Daten dieser URL wohl so zum Server, dass dieser mit den Parametern nichts anfangen kann. x und y werden nicht verarbeitet.
Beim NN jedoch sieht es so aus, wie es soll (wofür ja auch das eigenmächtige Anhängen der Parameter hinter den #-Ankernamen wie unter 2: gesehen spricht).

Das Ganze kann zwar auch unter
http://www.teamone.de/mpics/
am "lebenden Objekt" angeschaut werden, jedoch sind die Situationen, in denen der Fehler auftritt, etwas versteckt (vielleicht findet sie ja doch jemand ;-), deshalb das fiktive Beispiel.

Danke und viele Grüße
  Horst Reinelt

  1. Sup!

    Die RFCs sind Dein Freund. Rumliegen tun sie im Netz.
    Z.B. bei http://w3.org. Welche die RFC für URLs ist, weiss ich nicht sooo genau, aber Google und die Suche von W3 sind ebenfalls Deine Freunde, und ich habe wenig Zeit... und sonst mach' es eben wie Netscape und nicht wie das kompilierte Sicherheitsrisiko, dann wird es schon gehen ;-)

    Gruesse,

    Bio

    1. Hi Bio

      »»und sonst mach' es eben wie Netscape und nicht wie das kompilierte Sicherheitsrisiko, dann wird es schon gehen ;-)

      Würde ich nicht raten. Schau dir mal an, wie es der Mozilla macht ;-)

      Grüße

      Daniel

      1. Sup!

        Würde ich nicht raten. Schau dir mal an, wie es der Mozilla macht ;-)

        Wie denn? Doch nicht so wie der IE?

        Gruesse,

        Bio

    2. Hallo Bio,

      vielen Dank auch für den Link zum W3C.

      ebenfalls Deine Freunde, und ich habe wenig Zeit...

      Manchmal wünschte ich mir, ich bekäme lieber keine Antwort, als eine von einer sarkastisch gelaunten Person mit wenig Zeit.

      Grüße.

      1. Sup!

        Manchmal wünschte ich mir, ich bekäme lieber keine Antwort, als eine von einer sarkastisch gelaunten Person mit wenig Zeit.

        Tja, dann wünsch' mal schön!
        Also, in Wirklichkeit antworte ich natürlich nur, um in die Vielposterstatiskik zu kommen ;-)

        Gruesse,

        Bio
        (sarkastisch gelaunt, in der Tat)

        1. Hi!

          Da zum Thema eh nix kommt hab ich noch einen:

          um in die Vielposterstatiskik zu kommen ;-)

          Für "Letzte Postings in einem Tread" gibt es dort sicherlich extra Punkte, oder? Mal sehen ob's klappt ...

          Ciao Horst

          1. Sup!

            Zufällig gibt es keinen Bonus.
            Aber ich habe den Link.

            http://www.fetz.net/tux/stat.htm

            Da zum Thema eh nix kommt hab ich noch einen:

            Wie zum Thema kommt nichts - die definitive Antwort steht in den RFCs. Punkt.

            Wenn Du irgendwelche sehr merkwürdigen URLs bastelst, und das unterschiedliche Verhalten verschiedener Browser zum Anlaß nimmst, in dem Umstand, daß Du nicht weisst, wie eine gültige URL auszusehen hat und wie sich der perfekte Browser verhalten sollte, ein Problem zu sehen, das Du gelöst haben willst (obwohl sich das Enstehen solch' merkwürdiger URLs gut verhindern lässt), dann solltest Du IMHO auch bereit sein, Dir die Mühe zu machen, in die RFCs zu schauen.

            Aber bitte, Du kannst mir auch gerne ans Bein pinkeln, weil ich Deine Frage nebensächlich genug fand, um darauf diese (nicht mal falsche) Antwort im - zugegeben - "RTFM" Stil zu geben.

            Gruesse,

            Bio

            1. Hi Bio

              Aber ich habe den Link.

              http://www.fetz.net/tux/stat.htm

              Kurze Frage zu dem Link:

              Gestern kam da noch eine schicke Seite mit der Posting-Statistik, heute ist da ein Redirect zur nicht-funktionellen Posting-Statistik auf atomic-eggs.

              Wieso, warum ,wer und was überhaupt ? ;-)

              Ciao,

              Harry

  2. Hallo Horst,

    Ist die Kombination aus dieser URL (Beispiel)
    http://www.beispiel.de/cgi-bin/index.cgi?x=1&y=2
    und einem seiteninternen Linkziel mit dem Syntax
    <a href="#ankername">
    eigentlich erlaubt, und wenn ja, wie müsste der dann aussehen?

    Massgeblich sollte sein, was W3C dazu auf http://www.w3.org/Addressing/ bzw. auf den dahinter verlinkten RFCs zu sagen hat. Massgeblich duerfte wohl vor allem http://www.ietf.org/rfc/rfc2396.txt sein.
    Auf die Schnelle hab ich dort aber auch nicht rausgefunden, welche Syntax nun korrekt ist, oder ob beides erlaubt ist. Meinem "Gefuehl" nach gehoert ein Anker zur Referenz der Datenquelle und damit vor den Teil, der nicht zur Referenz, sondern zur Uebergabe von Parametern dient.

    Und lass dich nicht vom boesen Bio aergern, der weiss ja gar nicht, dass du Serverzugang hast und ihn loeschen koenntest ... ;-)

    viele Gruesse
      Stefan Muenz

    Der IE (5.0) macht daraus
    1: http://www.beispiel.de/cgi-bin/index.cgi?x=1&y=2#ankername
    und zeigt eine solche Seite absolut korrekt an.
    Beim NN (4.7) wird daraus allerdings
    2: http://www.beispiel.de/cgi-bin/index.cgi?x=1&y=2#ankername?x=1&y=2
    obwohl er (NN) die Seite an sich wie im IE korrekt anzeigt (wenn manuell eingegeben wie bei 1:).

    Momentan sehe ich nur die Möglichkeit statt
    <a href="#ankername">
    den Tag so
    <a href="http://www.beispiel.de/cgi-bin/index.cgi?x=1&y=2#ankername">
    zu schreiben, um das Problem zu umgehen.

    Kombiniere ich in anderer Reihenfolge:
    http://www.beispiel.de/cgi-bin/index.cgi#ankername?x=1&y=2
    sendet der IE die Daten dieser URL wohl so zum Server, dass dieser mit den Parametern nichts anfangen kann. x und y werden nicht verarbeitet.
    Beim NN jedoch sieht es so aus, wie es soll (wofür ja auch das eigenmächtige Anhängen der Parameter hinter den #-Ankernamen wie unter 2: gesehen spricht).

    Das Ganze kann zwar auch unter
    http://www.teamone.de/mpics/
    am "lebenden Objekt" angeschaut werden, jedoch sind die Situationen, in denen der Fehler auftritt, etwas versteckt (vielleicht findet sie ja doch jemand ;-), deshalb das fiktive Beispiel.

    Danke und viele Grüße
      Horst Reinelt

    1. Massgeblich duerfte wohl vor allem http://www.ietf.org/rfc/rfc2396.txt sein.
      Meinem "Gefuehl" nach gehoert ein Anker zur Referenz der Datenquelle und damit vor den Teil, der nicht zur Referenz, sondern zur Uebergabe von Parametern dient.

      Der Query gehoert sehr wohl zur Referenz der Datenquelle, Beispiel: http://forum.de.selfhtml.org/(?m=x&t=y).

      FYI: RFC2396, Section 4

    2. Hallo Stefan!

      Massgeblich duerfte wohl vor allem http://www.ietf.org/rfc/rfc2396.txt sein.

      Das habe ich mir noch mal etwas genauer angesehen und Folgendes gefunden:

      URI-reference = [ absoluteURI | relativeURI ] [ "#" fragment ]
         absoluteURI   = scheme ":" ( hier_part | opaque_part )
         relativeURI   = ( net_path | abs_path | rel_path ) [ "?" query ]

      Demnach kommt erst [ "?" query ] und dann [ "#" fragment ].

      Bei der Interpretation dieses Syntax gibt es auch keine Schwierigkeiten, eher bei der Generierung des selben bei NN.

      Und lass dich nicht vom boesen Bio aergern, der weiss ja gar nicht, dass du Serverzugang hast und ihn loeschen koenntest ... ;-)

      Ich sehe das für mich als Harmonie-Menschen eher als sportliche Herausforderung an ;-)

      Tschüss Horst

      1. Tag

        Demnach kommt erst [ "?" query ] und dann [ "#" fragment ].

        Finde ich auch irgendwie logischer. Der Teil "http://www.bla.de/x.html?y=z" liefert die Seite vom Server, auf Seite des Clienten wird dann an die Stelle "#anker" gesprungen.
        Das ist dann nicht so'n Mischmasch aus Angaben für Client und Server wie "bla#anker?parameter" (also server#client?server).

        Ciao,

        Harry

    3. Sup!

      Massgeblich sollte sein, was W3C dazu auf http://www.w3.org/Addressing/ bzw. auf den dahinter verlinkten RFCs zu sagen hat. Massgeblich duerfte wohl vor allem http://www.ietf.org/rfc/rfc2396.txt sein.
      Auf die Schnelle hab ich dort aber auch nicht rausgefunden, welche Syntax nun korrekt ist, oder ob beides erlaubt ist. Meinem "Gefuehl" nach gehoert ein Anker zur Referenz der Datenquelle und damit vor den Teil, der nicht zur Referenz, sondern zur Uebergabe von Parametern dient.

      Wo ist denn da der Unterschied zwischen meiner und Deiner Antwort?
      Ich bin böse, Du bist gut? Gibt's hier irgendwo eine Vorschrift "Bitte nur nette Antworten geben, die anderen könnten sonst weinen?"
      War die Frage nicht wirklich ein wenig herbeikonstruiert und ziemlich abwegig?

      Und lass dich nicht vom boesen Bio aergern, der weiss ja gar nicht, dass du Serverzugang hast und ihn loeschen koenntest ... ;-)

      Was soll mir das jetzt sagen? Muß ich jetzt Angst bekommen?
      CK hat auch verdammt viel Zugang und ist nicht so dünnhäutig.

      Darf ich nicht ein wenig patzig sein, wenn mir eine Frage ziemlich blödsinnig vorkommt?

      Um dem Herrn Horst Reinelt nicht die Genugtuung zu geben, behaupten zu können, ich sei total unfähig, habe ich ein wenig gesucht und
       die Lösung gefunden - der # kommt am Ende...

      http://www.w3.org/Addressing/rfc1808.txt

      War schon schwer, hat mich glatt 10 Minuten gekostet. Vielleicht habe ich nur so kurz gebraucht, weil ich so verdammt clever bin...

      Ehm... genau!

      Irgendwie bin ich gerade ziemlich sauer!

      Gruesse,

      Bio

      1. Hallo Bio!

        War die Frage nicht wirklich ein wenig herbeikonstruiert und ziemlich abwegig?

        "Wer es vorzieht Fragen zu bewerten, scheint sich um eine Antwort drücken zu wollen."

        Gibt's hier irgendwo eine Vorschrift "Bitte nur nette Antworten geben, die anderen könnten sonst weinen?"

        Wenn du meinst, Stefan hat mir geantwortet, damit ich nicht weine, hast du eine eigenartige Meinung vom Wesen anderer Menschen.

        Was soll mir das jetzt sagen? Muß ich jetzt Angst bekommen?
        CK hat auch verdammt viel Zugang und ist nicht so dünnhäutig.

        <flüsternd>stefan meinte das als scherz!</flüsternd>

        Darf ich nicht ein wenig patzig sein, wenn mir eine Frage ziemlich blödsinnig vorkommt?

        Doch, darfst du - stört mich nicht.

        War schon schwer, hat mich glatt 10 Minuten gekostet. Vielleicht habe ich nur so kurz gebraucht, weil ich so verdammt clever bin...

        Was dort steht ist mir bekannt. Das ändert nichts an der Tatsache, dass bei einer Seite mit der URL
        http://www.xyz.de/cgi-bin/index.cgi?x=1#name1
        in der ein Link <a href="#name2">name2</a> vorkommt, der Link im Netscape nicht korrekt ausgeführt werden kann (kann bei jedem #-Link in dieser Seite ausprobiert werden).

        Irgendwie bin ich gerade ziemlich sauer!

        Komisch, im Gegensatz zu mir.

        So, das ist jetzt mein letztes Posting in diesem Tread.
        Ich bedanke mich bei allen, die mir weitergeholfen haben (insbesondere Calocybe, der ohne vorschnell zu reagieren als einer der wenigen sich die Mühe gemacht hat, sich mit meinem Problem zu befassen -> http://forum.de.selfhtml.org/?m=13789&t=2418).

        Ciao
          Horst

  3. Hi there!

    Ist die Kombination aus dieser URL (Beispiel)
    http://www.beispiel.de/cgi-bin/index.cgi?x=1&y=2
    und einem seiteninternen Linkziel mit dem Syntax
    <a href="#ankername">
    eigentlich erlaubt, und wenn ja, wie müsste der dann aussehen?

    Na eben <a href="#ankername">. ;-)

    Der IE (5.0) macht daraus
    1: http://www.beispiel.de/cgi-bin/index.cgi?x=1&y=2#ankername
    und zeigt eine solche Seite absolut korrekt an.
    Beim NN (4.7) wird daraus allerdings
    2: http://www.beispiel.de/cgi-bin/index.cgi?x=1&y=2#ankername?x=1&y=2

    Das hab ich ja noch nie gesehen. Ich surfe nun wirklich schon eine ganze Weile mit dem ehrwuerdigen Netscape, aber sowas ist mir noch nie untergekommen. Wenn es so waere, wuerden auch die 3 Links auf dieser Seite oben in der Inhaltsuebersicht nicht funktionieren.

    Momentan sehe ich nur die Möglichkeit statt
    <a href="#ankername">
    den Tag so
    <a href="http://www.beispiel.de/cgi-bin/index.cgi?x=1&y=2#ankername">
    zu schreiben, um das Problem zu umgehen.

    Versuch wenigstens <a href="index.cgi?x=1&y=2#ankername">, damit die Referenz nicht ganz so absolut wird.

    Kombiniere ich in anderer Reihenfolge:
    http://www.beispiel.de/cgi-bin/index.cgi#ankername?x=1&y=2
    sendet der IE die Daten dieser URL wohl so zum Server, dass dieser mit den Parametern nichts anfangen kann.

    Eigentlich muesste er einfach die Ressource http://www.beispiel.de/cgi-bin/index.cgi anfordern, und dann in der Seite versuchen, zu #ankername?x=1&y=2 zu springen. Aber vielleicht faellt ihm auch auf, dass dann ungueltige Zeichen fuer einen Ankernamen enthalten sind.

    Beim NN jedoch sieht es so aus, wie es soll (wofür ja auch das eigenmächtige Anhängen der Parameter hinter den #-Ankernamen wie unter 2: gesehen spricht).

    Das waere IMHO falsch, denn der Ankername, der NICHT zur URL gehoert, wird immer am Ende angehaengt. Vorher kann das Zeichen # nicht (uncodiert) verwendet werden. Der Querypart, eingeleitet durch das ?, gehoert aber sehr wohl zur URL.

    Das Ganze kann zwar auch unter
    http://www.teamone.de/mpics/
    am "lebenden Objekt" angeschaut werden, jedoch sind die Situationen, in denen der Fehler auftritt, etwas versteckt (vielleicht findet sie ja doch jemand ;-), deshalb das fiktive Beispiel.

    Leider konnte ich dort keine Seite finden, auf der Ankerverweise enthalten waeren.

    So long

    1. Hi Calocybe!

      Das hab ich ja noch nie gesehen.

      http://www.teamone.de/cgi-bin/mpics/index.cgi?lang=0&menu=best&sort=1#PB140002
      und dann den Seitenanfang anwählen (umgedrehtes V), dann steht bei mir in der URL-Zeile:
      http://www.teamone.de/cgi-bin/mpics/index.cgi?lang=0&menu=best&sort=1#top?lang=0&menu=best&sort=1

      Und: Das macht der NN nur, wenn bereits ein Fragmentname (#xyz) in der URL steht.

      Probiere doch mal:
      http://forum.de.selfhtml.org/?m=13761&t=2418#a2, scrolle nach oben und wähle einen der von dir beschriebenen Linkzeilen an. Wenn es dann nicht so wie unten gezeigt aussieht, liegt's an meiner Installation, oder ich weiß nicht ...:
      http://forum.de.selfhtml.org/?m=13761&t=2418#a1?m=13761&t=2418

      Versuch wenigstens <a href="index.cgi?x=1&y=2#ankername">, damit die Referenz nicht ganz so absolut wird.

      Werd ich auch so machen.

      Leider konnte ich dort keine Seite finden, auf der Ankerverweise enthalten waeren.

      s. o.

      So long

      Danke und ciao
        Horst

      1. Moin!

        http://www.teamone.de/cgi-bin/mpics/index.cgi?lang=0&menu=best&sort=1#PB140002
        und dann den Seitenanfang anwählen (umgedrehtes V), dann steht bei mir in der URL-Zeile:
        http://www.teamone.de/cgi-bin/mpics/index.cgi?lang=0&menu=best&sort=1#top?lang=0&menu=best&sort=1

        Stimmt, jetzt seh ich's auch. Aber so einen Link (den 1. mein ich) muss man ja selber eingeben. Ich hab zumindest auf Deiner Seite keinen Weg gefunden, den durch Klicken zu erhalten (also keinen Link, der das #PB140002 enthaelt).

        Und: Das macht der NN nur, wenn bereits ein Fragmentname (#xyz) in der URL steht.
        Probiere doch mal:
        http://forum.de.selfhtml.org/?m=13761&t=2418#a2, scrolle nach oben und wähle einen der von dir beschriebenen Linkzeilen an. Wenn es dann nicht so wie unten gezeigt aussieht, liegt's an meiner Installation, oder ich weiß nicht ...:
        http://forum.de.selfhtml.org/?m=13761&t=2418#a1?m=13761&t=2418

        Ja stimmt, dann passiert das tatsaechlich. Offenbar also nur, wenn auf eine neue Seite mit Ankername verwiesen wird, nicht aber, wenn man eine Seite einfach laedt und dann darin rumklickt (obwohl er dann ja auch Anker-URLs erzeugt und sogar in die Adresszeile schreibt). IMHO kommt ein Fall wie in Deiner Anwendung eher selten vor.

        So long

        1. Hello again!

          Stimmt, jetzt seh ich's auch. Aber so einen Link (den 1. mein ich) muss man ja selber eingeben. Ich hab zumindest auf Deiner Seite keinen Weg gefunden, den durch Klicken zu erhalten (also keinen Link, der das #PB140002 enthaelt).

          Bei jedem Vorschaubild kannst du durch Anklicken das Bild in höherer Auflösung laden:
          http://www.teamone.de/cgi-bin/mpics/index.cgi?lang=0&menu=best&sort=1&picref=d20010929/P9290019-l.jpg&scale=500

          Von da aus gibts immer einen Link zurück ("zurück zu > ..."), der dann einen #... generiert, damit an die richtige Stelle des Vorschaubildes zurückgesprungen werden kann.

          Naja, jetzt weiß ich wenigstens, dass ich nicht der Einzige bin, der das sieht - ich habe schon an mir gezweifelt :-)

          Ciao
            Horst