Guten Tag,
ich versuche, unter Firefox die Unterseite einer Website gezielt zu
verlinken. Ich möchte an einem Beispiel klarmachen, worin das Problem
liegt:
Man begebe sich auf diese Seite
https://www.offiziellecharts.de
und trage in das "Suchen"-Feld "Barkley" mit abschließendem "Return"
ein. Tatsächlich bekommt man dann die gewünschten vier Suchergebnisse.
Eigentlich würde ich erwarten, dass jetzt in der Adressleiste das steht,
was zu diesem Suchergebnis führt. Aber das ist nicht der Fall. Dann da
steht:
https://www.offiziellecharts.de/suche
Aber wenn man das von Hand in die Adressleiste einträgt, kommen nicht
die Suchergebnisse nach "Barkley". Wie muss der Link lauten, damit man
zu diesen Suchergebnissen kommt und wie ermittelt man diesen Link?
Dass der Link in der Adressleiste nicht das wiedergibt, was die Seite
anzeigt, findet man des öfteren. Wie kommt man dann allgemein zu der
funktionierenden Adresse zu einer Unterseite?
Ungar schrieb:> Wie kommt man dann allgemein zu der> funktionierenden Adresse zu einer Unterseite?
Auf die gewünschte Art überhaupt nicht. Die Information steckt im
Handler des Browser-Tabs. Bei einem Refresh des Tabs wird der Browser
dir mitteilen, dass er die Information erneut senden muss, und so
erhältst du erneut den gesuchten Inhalt. Ein neu geöffnetes Tab hat
diese Information jedoch nicht.
(prx) A. K. schrieb:> Auf die gewünschte Art überhaupt nicht.
Das stimmt leider.
Es gibt min. zwei Arten,wie der Browser mit dem Server kommunizieren
kann: GET und POST.
Bei GET wird der "Suchbefehl" un die URL geschrieben, bei POST nicht.
Und direkt verlinken kannst du eben nur die URL mit den GET requests.
Die Suche Zeile übergibt die Information an den Webserver per POST
request.
Ein normaler linkt übertragt per GET request.
https://wiki.selfhtml.org/wiki/HTTP/Anfragemethoden
Hier die Lösung
https://stackoverflow.com/questions/8169027/how-can-i-submit-a-post-form-using-the-a-href-tag
Paramter
URL: www.offiziellecharts.de/suche
Method: POST
Data:
artist_search: Barkley
do_search: do
<form action="//www.offiziellecharts.de/suche" method="post">
<input type="hidden" name="artist_search" value="Barkley" />
<input type="hidden" name="do_search" value="do" />
<button type="submit" class="btn-link">Go</button>
</form>
Ungar schrieb:> Aber wenn man das von Hand in die Adressleiste einträgt, kommen nicht> die Suchergebnisse nach "Barkley". Wie muss der Link lauten, damit man> zu diesen Suchergebnissen kommt und wie ermittelt man diesen Link?>> Dass der Link in der Adressleiste nicht das wiedergibt, was die Seite> anzeigt, findet man des öfteren. Wie kommt man dann allgemein zu der> funktionierenden Adresse zu einer Unterseite?
Den Suchstring siehst Du in diesem Fall nicht in der Adressleiste, weil
dieser Parameter in diesem Fall nicht als HTTP GET Parameter (=direkt
als Teil der URL) übertragen wird, sondern per HTTP POST.
Allerdings hast Du in diesem Fall Glück, dem Webserver ist es in diesem
Fall hier egal, ob der Parameter per GET oder POST übergeben wird,
weshalb es auch mit folgender URL funktionieren würde:
https://www.offiziellecharts.de/suche?do_search=do&artist_search=Barkley
Aber das funktioniert halt nur manchmal, einen wirklich allgemeingültige
Lösungsweg kann man daher eigentlich nicht angeben.
(prx) A. K. schrieb:> Ungar schrieb:>> Wie kommt man dann allgemein zu der>> funktionierenden Adresse zu einer Unterseite?>> Auf die gewünschte Art überhaupt nicht. Die Information steckt im> Handler des Browser-Tabs. Bei einem Refresh des Tabs wird der Browser> dir mitteilen, dass er die Information erneut senden muss, und so> erhältst du erneut den gesuchten Inhalt.
Bei meinem Firefox kann man durch das Betätigen von F5 oder Strg-F5
diese Mitteilung des erneuten Sendens provozieren. Ich nehme an, dass es
das ist, was Du Refresh nennst. Wenn der Browser es schafft, die Seite
durch erneutes Senden herzustellen, müsste es doch einen Weg geben,
diese Prozedur des erneuten Sendens abzuspeichern und per Aufruf
durchführen zu lassen. Angenommen, ich wollte Euch, also den anderen
Forenteilnehmern diese Webseite mitteilen, für die ich keinen Link
senden kann. Könnte ich statt eines Links diese abgespeicherte Prozedur
hier veröffentlichen, so dass Ihr durch Draufklicken zu dem Ergebnis
kommt? Wenn nein, warum ist noch niemand dadrauf gekommen, dieses IMHO
sehr sinnvolle Feature in den Browsern bereit zu stellen?
Wie schafft es der Browser, diese Seite durch erneutes Senden zur
Anzeige zu bringen? Wird dann im Falle meines Anfangs-Beispiels das
"Suchen"-Feld auf der Charts-Website mit dem Begriff "Barkley" sozusagen
ausgefüllt?
Ungar schrieb:> Wenn der Browser es schafft, die Seite> durch erneutes Senden herzustellen, müsste es doch einen Weg geben,> diese Prozedur des erneuten Sendens abzuspeichern und per Aufruf> durchführen zu lassen.
Kommt drauf an. Der Betreiber der Seite kann z.B. die Bearbeitung von
Anfragen davon abhängig machen, ob auch ein gültiges Session-Token
mitge"post"et wird. Das geht zwar theoretisch auch bei "get", ist da
aber eher unüblich (zumindest als Restriktion für die Auslieferung der
Seite, die gegenteilige Anwendung solcher Token als
Informationslieferant hingegen wird durchaus sehr gern mitgenommen).
Grundsätzlich verfolgt i.d.R. der Betreiber der Seite irgendeine
Strategie. Schon die Entscheidung, ob "post" oder "get" verwendet wird,
ist typisch ein Ausdruck dieser Strategie. Sprich: wenn er "post"
verwendet, wünscht er keine Deep-Links in seinen Seitenbestand, sondern
will typischerweise, dass jeder User das ganze Elend der Werbung in den
höheren Seiten der Hierarchie mitnimmt, am besten immer und immer
wieder...
> warum ist noch niemand dadrauf gekommen, dieses IMHO> sehr sinnvolle Feature in den Browsern bereit zu stellen?
Weil Browser eigentlich nicht für Nutzer geschrieben werden, sondern für
die Werbewirtschaft. Die Nutzer sind nur ein (aus Sicht der
Browserhersteller) leider unumgängliche Anhängsel.
> Wie schafft es der Browser, diese Seite durch erneutes Senden zur> Anzeige zu bringen?
Na, indem er halt einen Post-Request sendet. Er kann das, weil er halt
alle Informationen der aktuellen Session hat. Schließt du den Tab oder
startest du den Browser neu, kann er das nicht mehr.
Ungar schrieb:> Wenn nein, warum ist noch niemand dadrauf gekommen, dieses IMHO> sehr sinnvolle Feature in den Browsern bereit zu stellen?
Es gab eine Zeit, in der man alles machte, was möglich ist. Bis man dann
merkte, dass nicht alles gut ist, was möglich ist. Sicherheitsaspekte
spielen heute eine wesentliche Rolle. Dazu gehört, den Inhalt
ausgefüllter Formulare einer Webseite strikt im Kontext der offenen
Seite halten zu können.
Die Seiten von Banken und andere kritischen Anbietern empfehlen gerne,
nach Abmeldung mindestens das Tab zu schliessen, besser noch den ganzen
Browser. Das tun sie nicht nicht ohne Grund.
c-hater schrieb:> Weil Browser eigentlich nicht für Nutzer geschrieben werden, sondern für> die Werbewirtschaft.
Die treibende Kraft hinter der Entwicklung von Browsern in den letzten
Jahren ist der Werberiese Google, über die Chrome Engine, weshalb das
nicht völlig von der Hand zu weisen ist. Aber "Janus" Google
berücksichtigt dabei andererseits auch Sicherheitsaspekte.
Man kann auch auf ein label springen, und das im Link mitgeben. Das
geschieht mit einem #
der link, hier lokal oben auf der seite
<A HREF = #mylabel > Mylabel < / A >
das label im content
<A target=_out name = mylabel >mylabel< / A >
mit den quotes anpassen.