it-swarm.com.de

Wie kann ich alle Ressourcen unter HTTPS anstelle von HTTP bereitstellen, ohne ihre URLs im HTML-Code zu ändern?

Ich weiß, dass ich durch die Verwendung einer .htaccess -Datei jeden zu https:// umleiten kann. Mein SSL-Zertifikat beschwert sich jedoch, wenn der gesamte Inhalt nicht unter HTTPS bereitgestellt wird.

Gibt es eine Möglichkeit, alle unter HTTPS bereitgestellten Ressourcen zu konvertieren, ohne alle URLs von http:// in https:// im HTML-Code zu ändern?

BEISPIEL: Wenn ich http://domain.com eingebe, wird https://domain.com aufgerufen. Die Bilder verwenden jedoch kein HTTPS, was zu Problemen führt. Gibt es eine Möglichkeit, alle Ressourcen dazu zu bringen, HTTPS zu verwenden?

Ich habe das:

RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_Host} ^www.domain\.com$ [NC]
RewriteRule ^ https://domain.com%{REQUEST_URI} [L,R=301]

Mein EV-Zertifikat verschwindet jedoch aufgrund ungesicherten Inhalts. Ich muss also alle Bilder auch unter HTTPS bereitstellen.

5
Jason

Sie müssen das 'http:' Präfix von allen Bild- (und anderen) Links auf Ihrer Site entfernen. Wenn Sie dies tun, verwendet Ihr Browser standardmäßig das Protokoll, mit dem die Seite geladen wird. Zum Beispiel ist dies am besten:

<a href="//www.example.com/">

Und das ist nicht:

<a href="http://www.example.com/">

Das oberste Beispiel ist ein vollständig gültiges Markup, und Sie laden alle Ihre Ressourcen über eine HTTPS-Verbindung mit dem bereits verwendeten Umschreiben. Beginnen Sie, es für alle Links zu verwenden, da es sowohl mit HTTP als auch mit HTTPS funktioniert. Wenn Sie SSL aktivieren oder deaktivieren, tritt dieses Problem also nie wieder auf.

Die einzige Überlegung ist, ob Sie ein CDN oder andere von Drittanbietern gehostete Inhalte auf Ihrer Website verwenden. In diesem Fall funktionieren die oben genannten Ratschläge nur, wenn sie ihre Ressourcen auch über HTTPS zur Verfügung stellen.

Sobald Sie dies tun, funktioniert Ihr EV-Zertifikat (Extended Validation) wie erwartet und Sie sollten alle Ressourcen auf der Seite über eine sichere Verbindung laden.

10
Tom Brossman

Als schnelle Lösung können Sie den Webbrowser auffordern, alle Ihre HTTP-URLs als HTTPS umzuschreiben , indem Sie den Content-Security-Policy: upgrade-insecure-requests; -Header oder <meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests"> -Meta-Tag mit jeder Seite senden.

Dies ist nicht als dauerhafte Lösung gedacht, sondern als Übergangstool, bis Sie alle Ihre URLs in https konvertieren können.