HTTP 302 relative URL?


#1

Hallo,

ich möchte folgendes verstehen:

Ich rufe eine URL am Proxy auf

http://mein.proxy.bla/thomas/daten

Der Proxy antwortet mit einem Redirect auf eine URL die aus daten extrahiert wird.

status:302
location: www.google.de

Das führt dazu, dass die Browser versuchen:

http://mein.proxy.bla/thomas/www.google.de

aufzurufen. Was mit einer 500 quittiert wird.
Beginnt die Redirection-Url mit https (https://www.google.de), funktiniert es und google wird angezeigt.

Wieso wird www.google.de als relative URL interpretiert?

Ich will es nur verstehen.

Grüße Thomas


#2

Laut RFC soll der location header die URI des neuen Ortes enthalten. Daher solltest du immer die volle Pfadangabe machen.

Vergleich das ganze mit einem Hyperlink. wenn du als href=“www.google.de” angibst, dann wird das auch als relative Angabe interpretiert. Nur wenn du eben eine Vollständig URL angibst, wird diese auch korrekt interpretiert.

Was du versuchen kannst ist, dass du die location mit //www.google.de angibts. Das sollte dazuführen, dass Google mit https aufgerufen wird wenn du den Proxy mit https ansprichst und mit http wenn der proxy mit http angesprochen wird. (Vorrausgesetzt, dass der proxy sowohl http als auch https versteht.)


#3

Äh. Stimmt. Ich habs gerade mal auf einer einfachen html-Seite probiert.
War mir gar nicht bewusst :wink:
Anscheinend habe ich bislang mein ganzes Html-Leben lang überall, wo ich Links extern aufgerufen habe, das Protokoll mit hin-gecopypasted.

peinlich :wink: