Rolf B: Navigation/Header von anderer Sub-Domain laden?

Beitrag lesen

Hallo Simon,

Stylesheets sollten kein Problem sein, Scripte laden kann man auch, nur Fetch-Operationen (XMLHttpRequest / Fetch-API) sind ohne CORS Header schwierig. Mit Header geht auch das.

Generell gilt, dass JavaScript-Code nur auf den Origin (Protokoll+Host+Port) Fetch-Zugriffe machen darf, von dem er geladen wurde. Zugriffe auf Fremd-Origins werden - meine ich - zwar ausgeführt, die Antwort ist aber "opak", d.h. du bekommst die Daten nicht.

Wenn Du generell einen Redirect von http auf https drin hat, kannst Du einfach URLs wie https://test.example.org/css/mystyles.css verwenden. Der Redirect empfiehlt sich ohnehin. Ohne diesen könntest Du einfach in den Ressourcen-URLs das Protokoll weglassen, dann übernimmt der Browser das Protokoll, mit dem die Hauptseite geladen wurde.

Wenn beide Domains auf dem gleichen Server liegen und Du hinreichende Rechte hast, kannst Du das Cross-Origin Problem aber auch serverseitig angehen. Wenn test.example.org in /var/www/example/test liegt und www.example.org in /var/www/example/www, dann könnstest Du mit dem ln Befehl im www Ordner einen Symlink shared erzeugen, der auf ../test/shared verweist (oder andersrum, oder du erzeugst in beiden einen Symlink auf einen gemeinsamen dritten Ordner). Auf diese Weise können beide Webs den gleichen Ordner nutzen, und dort legst Du HTML, CSS und JS hinein, das beide Domains verwenden sollen.

Wenn Du PHP auf deinem Server nutzen kannst, könntest Du auch PHP als Include-Engine nutzen, wie wir es in unserem Wiki unter PHP Templates beschreiben. Dafür muss man nicht mit PHP programmieren können. Symlinks brauchst Du dann nicht unbedingt.

Eine Alternative sind Server-Side Includes (SSI), die unterstützt aber nicht jeder Hoster. Nachladen vom Client per AJAX-Technik ist aus meiner Sicht die schlechteste Alternative und nur dann die erste Wahl, wenn man die ganze Seite ohnehin per JavaScript aufbaut (z.B. mit Angular oder React).

Rolf

--
sumpsi - posui - obstruxi