2016-05-29 9 views
0

Ich habe zwei JSP-Dateien in meiner Hauptanwendung, während eine MAIN.jsp und eine andere ist CSS & JS import.jsp Datei.Wie bekomme ich das Host-Protokoll im Import JSP

MAIN.jsp ist die Hauptseite der Hauptanwendung. Die Datei import.jsp importiert das CSS und JS der Partneranwendung in die Datei MAIN.jsp, die zur Unterstützung der wenigen Funktionen mit der Hauptanwendung als Partner verwendet wird.

Aber alle Anwendungen (Main und Partner) werden auf demselben Server bereitgestellt. Im Grunde wird sich der Hostname der beiden Anwendungen nicht ändern, aber der Kontextstamm allein wird geändert.

Ich habe JSP-Import-Tag verwendet, um die Datei import.jsp in MAIN.jsp wie unten genannten Code zu importieren.

main.jsp

<html> 
<head> 
    <c:import url="resourceImport/import.jsp"> 
</head> 
<body> 
</body> 
</html> 

import.jsp

<html> 
<head> 
    <link url="http://hostName/DifferentContext/example.css" rel="stylesheet" type="test/css"> 
    <script type="text/javascript" src="http://hostName/DifferentContext/sample.js" > </script> 
</head> 
<body> 
</body> 
</html> 

Derzeit i der URL-Partner HTTP hart codiert haben in import.jsp für Last all die Ressource in main.jsp Datei. Wir planen jedoch, die Anwendung in HTTP- und HTTPS-Umgebung auszuführen.

Also wie kann ich es dynamische Art Protokoll in import.jsp Datei erhalten. Ich habe folgende Methoden versucht, um das Protokoll dynamisch zu bekommen, aber es funktioniert nicht.

Methode 1:

Protokoll aus- und macht es relative URL

<head> 
    <link url="//hostName/DifferentContext/example.css" rel="stylesheet" type="test/css"> 
    <script type="text/javascript" src="//hostName/DifferentContext/sample.js" > </script> 
</head> 

Methode 2

Entfernen Protokoll und Hostnamen und macht es relative URL

<head> 
    <link url="//DifferentContext/example.css" rel="stylesheet" type="test/css"> 
    <script type="text/javascript" src="//DifferentContext/sample.js" > </script> 
</head> 

Könnten Sie mir bitte helfen, dieses Problem zu lösen.

Antwort

0

Wenn es etwas, die es wert macht https zu verwenden (und in diesen Tagen dort ist), die ich für weniger Aufwand entscheiden würde und nur https überall gehen.

Keine Sorgen mehr, kein versehentliches Informationsleck und Protokollwechsel. Einfachere Wartung und keine spätere Aktualisierung wird versehentlich eine falsche Protokollverbindung zurückbringen.

Überprüfen Sie HSTS als eine Option, um kompatible Browser zu zwingen, in Zukunft keine HTTP-Verbindungsversuche zu unternehmen.

Das heißt, relative Links sind eine weitere Möglichkeit, im selben Protokoll zu bleiben und wahrscheinlich von Vorteil: Sie möchten nur selten Domänennamen in Ihren Anwendungen fest codieren - Je nachdem, welchen Programmierstil Sie in Ihrer App verwenden Möglicherweise möchten Sie seitenrelative Links (../DifferentContext/example.css) oder serverbezogene (/DifferentContext/example.css) verwenden. Protokoll relativ ist auch gut, aber fest codiert den Domain-Namen.

Eine weitere Option ist, dass dieser Ort vollständig konfigurierbar ist. Auf diese Weise können Sie später entscheiden (vorausgesetzt, Sie haben alle Vorkommnisse auf den konfigurierten Wert geändert): ${config.theOtherAppBaseUrl}/example.css. Mit diesem können Sie alle verschiedenen Optionen selbst und innerhalb von 10 Minuten ausprobieren. Und ändern Sie Ihre Meinung später, wenn Sie zu dem Schluss kommen, dass es sich lohnt, überall https zu gehen.

(Hinweis: Sie haben ein Problem im Code Ihrer Frage ist: Das letzte Glied bezieht sich auf //DifferentContext...., die davon ausgehen würde, dass DifferentContext ein Hostname ist - das ist ein Protokoll relative URL)

Verwandte Themen