dedlfix: Ajax: HTTP verweigert Aufruf von HTTPS

Beitrag lesen

problematische Seite

Tach!

Wenn mit https, werden sogar Bilder nicht geladen (oder nur nicht gezeigt?), die per http aufgerufen werden.

Was da konkre der Fall ist, offenbaren die Entwicklertools des Browsers, nicht zuletzt die Konsole mit ihren Fehlermmeldungen.

Andersrum gab es zunächst keine Probleme. Nachdem die Bild-Aufrufe auf https umgestellt waren, durften sie auch von http gerufen werden.

Ja, gesichert übertragene Elemente dürfen immer in ungesichert übertragenen Dokumenten angezeigt/eingebunden werden. Dabei verringert sich ja die sowieso schon bei der Übertagung nicht vorhandene Sicherheit der HTTP-Ressource nicht.

Doch was ist das: Die http-Seite darf per Ajax keine Information nachladen, die mit https aufgerufen wird. Es geht um die Veranstaltung „zuletzt gelesen“.

Fehlermeldung der Konsole:

Quellübergreifende (Cross-Origin) Anfrage blockiert: Die Gleiche-Quelle-Regel verbietet das Lesen der externen Ressource auf https://remso.eu/ajax/events_zuletzt_gelesen.php?TID=&lg1=de&lg2=de. (Grund: CORS-Kopfzeile 'Access-Control-Allow-Origin' fehlt).

https://example.com und http://example.com sind unterschiedliche Quellen, da weigert sich der Browser erstmal.

Wie kann ich dem Fehler begegnen?

Kann Javascript ermitteln, ob es sich im http oder https Bereich bewegt?

Nein, aber man kann protokollrelative Verweise notieren //example.com. Damit nimmt der Browser das Protokoll der einbettenden Ressource.

Was ist eine CORS-Kopfzeile? Muss ich die dem Ajax-Aufruf voranstellen?

CORS-Header zu setzen kann auch bereits reichen. Damit erlaubt der Server dem Browser, von wo aus Scripts nachgeladen werden dürfen.

Beispielsweise zeigt ein Dokument mit dem HTTP-Header Access-Control-Allow-Origin: *dem Browser an, dass er von allen Quellen aus Ressourcen nachladen darf. Statt * kann da auch sowas wie https://example.com stehen.

dedlfix.