Virtual Domains - Fehlermeldung

Foreign Host or redirection!

Screenshot Admin

Bis vor einigen Tagen funktionierte meine Joomla-Seite mit virtual domains ohne Probleme. Die Seite selbst befindet sich noch im Aufbau und soll nach Fertigstellung mit SSL-Verschlüsselung betrieben werden.

Nun wird im Admin in der Übersicht die Meldung "Foreign Host or redirection!" angezeigt. Die Überprüfung der Seiten hat ergeben, dass die Funktionalität der Seite nicht beeinträchtigt ist. Woher kommt also die Fehlermeldung?

Die Ursache ist das SSL-Zertifikat der Hauptdomain, welches vor einigen Tagen aktiviert wurde.

Die Funktion: Host Check wird über Javascript mit JQuery aufgerufen. Dabei soll geprüft werden, ob die eingetragene Domain oder Subdomain auf den richtigen Server bzw. Webspace zeigt, nämlich dorthin, wo sich die zugehörigen Programme befinden.

Diese Funktion ruft die URL über AJAX und XMLHttpRequest immer ohne SSL auf. Die Fehlermeldung wird angezeigt weil der Browser, in konkretem Fall der aktuelle Firefox, den Aufruf von gemischten Inhalten verhindert.

Ein Versuch mit dem Internet Explorer 11 brachte das gleiche Ergebnis.

Datei: hostcheck.js

jQuery.noConflict();
(function($) {
	jQuery(document).ready(function() {
		console.log('fertig');
		$('.hostcheck').each(function() {
			var curelem = $(this);
			var host = $(curelem).attr('data-host');
			var url = 'http://' + host + '/index.php?option=com_virtualdomains';
            
			 $.getJSON( url).done(function( response ) {
				 var data = jQuery.parseJSON(response);
				 if(host == data.hostname) {
					 $(curelem).html('OK')
					 $(curelem).css('color','green');
				 } else {
					 $(curelem).html('Redirection won\'t work!!');
					 $(curelem).css('color','red');
				 }
				 console.log(host + ' = ' + data.hostname);
			}).fail(function() { 
				$(curelem).html('Foreign Host or redirection!');
				$(curelem).css('color','red');
				});
		})
	});
	
})(jQuery);

Wenn alle Domains und Subdomains der Installation mit einem Zertifikat ausgerüstet sind, dann kann das Problem mit dem Ersetzen von http mit https im markiertem Bereich behoben werden.

Für alle Domains und Subdomains ohne Zertifikat kann nur im eigenem Admin-Bereich geprüft werden, ob der Host OK ist.

Da bei Verwendung von virtual domains in allen Admin-Bereichen die gleichen Scripte aufgerufen werden, muss der Aufruf mit bzw. ohne https als Weiche programmiert werden.

Datei: hostcheck.js (modifiziert)

Das modifizierte Script. Die ergänzten Zeilen sind markiert.

jQuery.noConflict();
(function($) {
	jQuery(document).ready(function() {
		console.log('fertig');
		
		var oLoc = document.location,
		prot = oLoc.protocol;
		
		$('.hostcheck').each(function() {
			var curelem = $(this);
			var host = $(curelem).attr('data-host');
            
			var url = prot + '//' + host + '/index.php?option=com_virtualdomains';
			 $.getJSON( url).done(function( response ) {
				 var data = jQuery.parseJSON(response);
				 if(host == data.hostname) {
					 $(curelem).html('OK')
					 $(curelem).css('color','green');
				 } else {
					 $(curelem).html('Redirection won\'t work!!');
					 $(curelem).css('color','red');
				 }
				 console.log(host + ' = ' + data.hostname);
			}).fail(function() { 
				$(curelem).html('Foreign Host or redirection!');
				$(curelem).css('color','red');
				});
		})
	});
	
})(jQuery);

Nach den o.g. Anpassungen werden die Domains bzw. Subdomains ohne Zertifikat nur deshalb nicht bestätigt, weil der Browser das fehlende Zertifikat bemängelt.

...
...

Als Programmierer und Administrator der Internetpräsenz kann ich für diese Seiten eine Ausnahme im Browser eintragen, zumal diese Ausnahmen nur vorübergehend notwendig wären.

Danach werden die als Ausnahme eingetragen Domains und Subdomains selbstverständlich auch im Admin-Bereich der verschlüsselten Hauptdomain als korrekter Host erkannt.

Anmerkung

uMatrix blockiert XHR
uMatrix blockiert XHR

Browser add-ons, wie z.B. uMatrix, die als Firewall oder Script-Blocker arbeiten, können je nach Einstellungen JavaScripte und XHR blockieren. Auch in diesem Fall wird die Fehlermeldung "Foreign Host or redirection!" ausgegeben.

^