Doppelte Javascript-Dateien mit http und https

Liebes Forum :slight_smile: :slight_smile:

In Sistrix Smart bekomme ich für falgende Meldung:

Unter folgenden URLs wird ein und dieselbe JavaScript-Datei mittels unterschiedlichem Dateinamen oder Pfad eingebunden. Dies führt dazu, dass der Webbrowser die JavaScript-Datei nicht zwischenspeichern kann und sie bei jedem Seitenaufruf erneut laden muss. Die Ladezeit Deiner Website wird somit unnötig erhöht.

Dann folgen glaube ich alle JavaScript-Dateien, die ich so habe, zum Beispiel

 http://www.meinshop.de/themes/Frontend/Responsive/frontend/_public/src/js/vendors/modernizr/modernizr.custom.35977.js

 https://www.meinshop.de/themes/Frontend/Responsive/frontend/_public/src/js/vendors/modernizr/modernizr.custom.35977.js

 

 

 http://www.meinshop.de/themes/Frontend/meinshop/frontend/_public/vendors/js/jquery.cookie/jquery.cookie1.4.1.min.js

 https://www.meinshop.de/themes/Frontend/meinshop/frontend/_public/vendors/js/jquery.cookie/jquery.cookie1.4.1.min.js

 

u.s.w. ich glaube für alle JavaScript-Dateien.

Die Javascript-Dateien gibt es also natürlich nicht doppelt, sie sind nur mit mit http oder https ansprechbar.

Was kann man da machen?

Liebe Grüße

Kerstin

Naja du müsstest wohl entweder alles komplett auf https:// oder http:// umstellen. Hast du vielleicht aktuell nur https:// im Checkout? 

Wenn du das komplett umstellst, dann kannst du einen automatischen Redirect von http:// auf https:// einrichten.

Vielen Dank.

Es wird ja an einigen Stellen empfohlen nicht komplett umzustellen. Was meinst du dazu ?

Und wie macht man dieses Redirect ? Mit htaccess habe ich das gefunden, aber ich habe einen nginx Server.

Es gibt doch viele Shops, die nur bestimmte Bereiche mit https absichern. Haben die alle das Problem?

Dann ist ja erstmal klar, warum die Datei über beide URLs erreichbar sein muss, sonst hast du ja mixed Content, der ggf. sogar vom Browser blockiert wird. Wenn du SSL nur im Checkout nutzt, muss die Datei über beide Links erreichbar sein.

SEO ist eine Wissenschaft für sich. Viele große Shops laufen komplett auf SSL. Ob das jetzt sinnvoll ist oder nicht, kann ich leider nicht beurteilen. 

Wenn du einen Apache-Server hast, dann kannst du das relativ einfach über die .htaccess machen:

RewriteCond %{HTTPS} !=on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Dafür kannst du bspw. die Rule für das Backend abändern.

Danke. Allerdings habe ich wie gesagt einen nginx-Server.

Und was für eine Rule für das Backend meinst du?

Wir liefern eine https:// Rule für das Backend in der .htaccess mit aus, die muss man nur aktivieren: shopware/.htaccess at 5.2 · shopware/shopware · GitHub

Die kann man halt gut umändern und aus backend/(.*) einfach (.*) machen, dann hat man Frontend und Backend auf SSL.

Hallo,

CSS- und JS-Dateien müssen nicht mit https und http im Source-Code verlinkt sein, um nur den Checkout verschlüsselt anzuzeigen. Es reicht vollkommen, diese relativ zu verlinken - ohne Protokollanweisung und ohne Domain. Shopware macht dies eigentlich automatisch und der modernizer sollte in web/cache liegen. Überprüf dein Theme und setze die Links auf die JS-Dateien ohne Domain.

Die ngnix Regeln für einen Redirect von http auf https sollte dir dein Hoster sagen können, vor allem, wie/wo Du die ngnix-Konfig bearbeiten kannst. Achte darauf einen 301 Redirect einzustellen. 

 

 

Vielen Dank für die Antwort :slight_smile:

CSS- und JS-Dateien müssen nicht mit https und http im Source-Code verlinkt sein

Das muss ich mal überprüfen. Aber selbst bei den gecachten JS-Dateien von Shopware ist das so.

… und dann muss ich mich einmal an den Hoster wenden.

Liebe Grüße

Kerstin

 

also im Quellcode steht eigentlich auch der relative Pfad, z.B.

/themes/Frontend/meinshop/frontend/_public/vendors/js/jquery.cookie/jquery.cookie1.4.1.min.js

@Kerstin83 schrieb:

also im Quellcode steht eigentlich auch der relative Pfad, z.B.

/themes/Frontend/meinshop/frontend/_public/vendors/js/jquery.cookie/jquery.cookie1.4.1.min.js

 

Welchen Quellcode meinst Du denn jetzt , das Smarty Template oder den HTML-Source Code im Browser? Gib doch bitte wenigstens einen Link an, damit man schnell etwas nachsehen kann. 

Der Modernizer ist relativ verlinkt im head , die kompilierten JS-Dateien des Responsive- und des eigenen Themes liegen in web/cache . Beide sind relativ verlinkt und erzeugen dadurch niemals mixed content bei https-Seiten.

Ist dies bei dir anders, muss es am Theme (Konfiguration?) oder irgendwelchen serverseitigen Caching/Modifikationssystemen liegen (GooglePagespeed-Modul, php-fpm neu starten, etc. ?). 

 

Ich meinte den „HTML-Source Code im Browser“.

Auch wenn es relativ adressiert wird, ist es doch immer noch absolut ansprechbar, oder täusche ich mich da ? Also gibt es eigentlich tatsächlich diese beiden Ressorcen, oder ?

Kennst du einen Shop, der nur teilverschlüsselt ist und bei dem das anders ist?

Den Link möchte ich hier lieber nicht öffentlich posten :slight_smile:

Hallo Kerstin, 

wir haben auch einen Shop, der nur teilweise auf https (nur Checkout und Accountseiten) läuft.

In Sistrix haben wir die gleiche Meldung, wie du bereits geschrieben hast.

Ich denke nicht, dass dies ein großes Problem darstellt. Natürlich müssen die JS Dateien per http und https erreichbar sein, wenn du den Shop nicht komplett auf https umgestellt hast. Die Dateien liegen trotzdem nur 1 mal auf dem Server.

Wenn du dich so sehr an der Meldung in Sistrix störst, stell den Shop komplett auf https um, dann sollte das verschwinden.

Wenn du nicht umstellen willst, kannst du die Meldung auch vernachlässigen denke ich.

 

Gruß

Markus

@Kerstin83 schrieb:

Ich meinte den „HTML-Source Code im Browser“.

Auch wenn es relativ adressiert wird, ist es doch immer noch absolut ansprechbar, oder täusche ich mich da ? Also gibt es eigentlich tatsächlich diese beiden Ressorcen, oder ?

Den Link möchte ich hier lieber nicht öffentlich posten :)

 

  •  1 x Mal relativ verlinkt im HTML-Source ist in Ordnung. Der Browser handelt die Protokollauswahl dann immer korrekt. 

  •  Man kann immer mit http und https auf Dateien des Webservers zugreifen, wenn man das Protokoll (http / https) manuell setzt. Ausnahme: In der Webserverkonfiguration wird eine Umleitung eines http Aufrufs auf https erzwungen.

  • Die Ladezeiten erhöhst Du evtl. beim Wechsel in den Checkout, da du dort die Dateien neu laden musst. Wenn Du dies sicher über alle Geräte ausschließen möchtest, musst Du entweder die JS- und CSS-Dateien immer absolut mit https im HTML-Source verlinken oder komplett auf SSL-Verschlüsselung umstellen.

Also wenn es nur beim Übergang von http nach https bzw. von https nach http neu geladen werden muss, kann ich damit glaube ich leben.

Insbesondere dieser Teil der Sistrix-Meldung hat mich gestört:

Dies führt dazu, dass der Webbrowser die JavaScript-Datei nicht zwischenspeichern kann und sie bei jedem Seitenaufruf erneut laden muss.

bei jedem Seitenaufruf also. Das ist wahrscheinlich gar nicht richtig, oder ?