In GetMapping werden Site-Ressourcen in die UUID geleitet

8

Ich habe viel über dieses Thema recherchiert und es ist mir nicht gelungen, jemanden zu finden, der etwas ähnliches erwähnt.

Ich erstelle eine Spring-Boot-App und verwende GetMapping , um meine Ressourcen zuzuordnen. Aus irgendeinem Grund erhalte ich merkwürdige Fehler, wenn ich UUID als mein PathVariable benutze.

Controller.java

%Vor%

test.html - mit dem Stylesheet, das nicht existiert.

%Vor%

Dies führt zu folgendem Fehler:

%Vor%

test.html - Ich erhalte KEINE Fehlermeldung, wenn ich eine gültige CSS-Datei verwende

%Vor%

Controller.java - Wenn auf die UUID ein Schrägstrich / und eine ungültige CSS-Datei folgt, wird kein Fehler angezeigt.

%Vor%

Ich habe den Eindruck, dass das ungültige CSS in die zweite UUID eindringt. Ich weiß, dass ich dieses Problem einfach lösen kann, indem ich keinen ungültigen CSS-Pfad verwende, aber ich möchte unbedingt verstehen, warum ich diesen Fehler erhalte.

BEARBEITEN: Ich habe eine einfache Testanwendung erstellt, um den Fehler zu veranschaulichen. Dies könnte es einfacher für Sie machen, damit zu basteln. Führen Sie das Projekt als Spring Boot Application aus und besuchen Sie localhost: 8080 - Denken Sie daran, auf Ihre Konsole zu achten.

Ссылка

    
kkflf 22.02.2018, 02:55
quelle

2 Antworten

5

Dies wird durch Verwendung einer relativen Stylesheet-URL href="bullshit" verursacht. Der Browser löst das Problem mithilfe der Website-URL auf, wobei der entscheidende Unterschied das nachgestellte Zeichen / ist.

Für http://localhost/test/b74adb59-af60-423e-a3dd-c2f356114b51 fordert der Browser http://localhost/test/bullshit an, das @GetMapping in Ihrem @Controller zu treffen. Dies führt dazu, dass Spring bullshit String nicht in eine gültige UUID konvertiert und eine IllegalArgumentException ausgelöst wird.

Für http://localhost/test/b74adb59-af60-423e-a3dd-c2f356114b51/ fordert der Browser http://localhost/test/b74adb59-af60-423e-a3dd-c2f356114b51/bullshit an, was von ResourceHttpRequestHandler gehandhabt wird, und 404 wird zurückgegeben, da es keine test/b74adb59-af60-423e-a3dd-c2f356114b51/bullshit Ressource gibt. Während des Starts protokolliert Spring Boot, dass /** URLs ResourceHttpRequestHandler zugeordnet sind.

    
Karol Dowbecki 28.02.2018, 21:50
quelle
1

Da die URL method1 auf / endet, gibt Link href die URL des Styles in / method1 / b74adb59-af60-423e-a3dd-c2f356114b51 / bs wieder, die eine korrekte UUID enthält und Spring Boot diese Zeichenfolge zuordnen kann UUID-Format, während methode2-URL nicht in / endet, wodurch der Browser den Link href als / method2 / bs behandelt, und da "bs" keine gültige UUID ist, wird eine IllegalArgumentException ausgelöst.

    
user1176999 24.02.2018 19:25
quelle

Tags und Links