Ergebnis 1 bis 7 von 7

Thema: MIME-Typ-Konflikt beim Einbinden von eigenem js

  1. #1
    Community-Moderatorin & Contao-Urgestein Avatar von mlweb
    Registriert seit
    10.07.2011.
    Beiträge
    6.753
    Contao-Projekt unterstützen

    Support Contao

    Standard MIME-Typ-Konflikt beim Einbinden von eigenem js

    Ich habe in Contao 3 mein eigenes js immer mit
    Code:
    <script type="text/javascript" src="files/js/script.js"></script>
    als eigenen javascript-code eingebaut.
    In einem Contao 4 Projekt bekomme ich im Firefox die Fehlermeldung:
    Code:
    Die Ressource von "https://meine.domain.de/"  
    wurde wegen eines MIME-Typ-Konfliktes blockiert (X-Content-Type-Options: nosniff).
    Ich nehme an, dass mein Problem mit https://github.com/contao/standard-edition/issues/54 zusammenhängt, bin aber noch nicht durchgestiegen was ich falsch mache, denn der
    Code:
    type="text/javascript"
    sollte doch ein gültiger MIME-Typ sein.
    Getestet habe ich auch
    Code:
    type="application/javascript"
    Habe zur Sicherheit auch noch einmal kontrolliert, das der Ordner wirklich freigegeben ist.

    In der Demo kann man den Fehler nachstellen, wenn man die vorhandene Datei jquery.contao.boomerang.js in eins der Seitenlayouts über den custom javascript code einbindet.

    Wo mache ich einen Denkfehler?
    Ich habe Dir mit meinen Hinweisen geholfen und Du möchtest Dich bedanken?
    Unterstütze bitte das Contao-Projekt (Button Links)
    Weitere Spendenmöglichkeiten
    ------------------------------------------------------------------------------------------------------
    Contao-Dokumentation: Contao-Handbuch und Contao-Entwickler-Doku
    Contao-Online-Video-Kurse: Contao Academy
    Funktionalität erweitern: Contao-Erweiterungen

    Für Dinge die man mit html5 und css3 lösen kann, braucht man kein javascript.




  2. #2
    Community-Moderatorin & Contao-Urgestein Avatar von mlweb
    Registriert seit
    10.07.2011.
    Beiträge
    6.753
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Durch einen Hinweis von @Bjarke hat sich das Problem gelöst. Meine Testinstallation war lokal auf einem Windows-Rechner. Ursache sind wahrscheinlich fehlende Symlinks. Auf jeden Fall habe ich die Installation mal kurzer Hand auf meinen Entwicklungsserver geschoben und siehe da es läuft. Ganz klar ist mir noch nicht, warum ich den Fehler in der Demo nachstellen kann, aber vielleicht deshalb weil ich dort keine Systemwartung mit neuem Aufbau der Symlinks durchgeführt hatte.
    Ich habe Dir mit meinen Hinweisen geholfen und Du möchtest Dich bedanken?
    Unterstütze bitte das Contao-Projekt (Button Links)
    Weitere Spendenmöglichkeiten
    ------------------------------------------------------------------------------------------------------
    Contao-Dokumentation: Contao-Handbuch und Contao-Entwickler-Doku
    Contao-Online-Video-Kurse: Contao Academy
    Funktionalität erweitern: Contao-Erweiterungen

    Für Dinge die man mit html5 und css3 lösen kann, braucht man kein javascript.




  3. #3
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.114
    Partner-ID
    10107

    Standard

    Bei solchen Fehlern immer zuerst überprüfen, ob du die jeweilige Datei auch tatsächlich direkt aufrufen kannst.

  4. #4
    Community-Moderatorin & Contao-Urgestein Avatar von mlweb
    Registriert seit
    10.07.2011.
    Beiträge
    6.753
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Die Datei lässt sich lokal aufrufen. Bin ich zwar vorhin nicht drauf gekommen, habe ich aber gerade getestet.
    Muss mal schauen ob ich der Sache noch einmal auf den Grund gehen will.

    Edit: Natürlich macht mich auch die Fehlermeldung von Firefox etwas stutzig s.o.
    Geändert von mlweb (24.07.2017 um 21:28 Uhr)
    Ich habe Dir mit meinen Hinweisen geholfen und Du möchtest Dich bedanken?
    Unterstütze bitte das Contao-Projekt (Button Links)
    Weitere Spendenmöglichkeiten
    ------------------------------------------------------------------------------------------------------
    Contao-Dokumentation: Contao-Handbuch und Contao-Entwickler-Doku
    Contao-Online-Video-Kurse: Contao Academy
    Funktionalität erweitern: Contao-Erweiterungen

    Für Dinge die man mit html5 und css3 lösen kann, braucht man kein javascript.




  5. #5
    Wandelndes Contao-Lexikon Avatar von tab
    Registriert seit
    22.10.2013.
    Beiträge
    10.078
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Also, ich habe mal versucht zu verstehen, was dieses
    Code:
    X-Content-Type-Options: nosniff
    bedeutet und mir einen Reim darauf zu machen versucht, was jetzt die Fehlermeldung hervorrufen könnte und warum sie auf dem einen Server kommt und auf dem anderen nicht.

    Es bedeutet m.E., dass damit der Browser angewiesen wird, nicht selbst zu versuchen, den MIME-Typ aus dem Dateiinhalt selbst zu bestimmen, sondern gefälligst den MIME-Typ zu benutzen, mit dem die Ressource vom Server ausgeliefert wird.

    Die Fehlermeldung wird wohl bedeuten, dass der Webserver einen anderen MIME-Typ für die Datei angegeben hat, als du in deinem
    Code:
    type="text/javascript"
    Firefox gibt dann die beleidigte Leberwurst und sagt: "Jetzt habe ich hier zwei widersprüchliche Angeben für den MIME-Typ, der Server sagt es ist Typ x und im script-Tag steht y. Ich hätte ja selbst rausfinden können, was das wirklich ist, aber ich darf ja nicht, der Server hat es mir mit dem nosniff verboten.

    Warum das nun auf einem Server klappt und auf dem anderen nicht, könnte damit zusammenhängen, dass hier serverseitig die Mime-Typen für Javascript unterschiedlich eingestellt sind.
    Mein Server bei webgo liefert Javascript in meiner Contao 4 Testinstallation zum Beispiel wie folgt aus:
    Code:
    Content-Type: "application/x-javascript"
    Der selbe Server bei webgo sagt dagegen in einer Contao 3 Installation
    Code:
    Content-Type: "application/javascript"
    Ein Webserver bei Hetzner sagt in eine Contao 3 Installation ebenfalls (m.E. die korrekte Variante):
    Code:
    Content-Type: "application/javascript"
    Tolle Sache, woher kommt der Unterschied? In der Contao 4 Testinstallation habe ich nichts in der .htaccess stehen, bei Contao 3 dagegen unter anderem:
    Code:
    ##
    # Set the proper MIME types
    # @see https://github.com/h5bp/html5-boilerplate
    ##
    <IfModule mod_mime.c>
      AddType application/javascript              js jsonp
      AddType application/json                    json
      AddType audio/ogg                           oga ogg
      ...
    Da haben wir wohl des Rätsels Lösung. Bei einigen Servern ist da wohl als Default noch application/x-javascript eingetragen und wenn in der .htaccess nicht anders gesetzt steht es nachher so im Header. Da heißt es also, in der .htaccess die richtigen MIME-Typen zu setzen. Dem Browser hätte es wahrscheinlich kein Problem gemacht, das Javascript anhand des MIME-Typs als solches zu identifizieren, egal ob es vom Server als text/javascript, application/javascript oder application/x-javascript ausgeliefert wird. Browser sind in der Regel sehr flexiblel . Erst dadurch, dass du im script-Tag einen anderen MIME-Typ angegeben hast als der Server kam der Konflikt zustande, den der Browser dann auch nicht selbst entscheiden durfte (nosniff) und folgerichtig das Script aus Sicherheitsgründen blockiert hat. Hättest du einfach nur <script> geschrieben, was ja in HTML5 zulässig ist, wäre wohl nichts passiert. Der Browser hätte das Script als das genommen, was der Server ihm gesagt hat und wäre wohl mit allen drei Varianten klargekommen.

  6. #6
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Seit HTML5 benutze ich auch immer nur <script></script>. Der Contao Core macht das auch.
    Bitte!
    Vor Anfragen im Forum HTML validieren.
    Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

    Vielen Dank an alle Wunschlistenerfüller
    Andreas Burg, Web Solutions

  7. #7
    Contao-Nutzer
    Registriert seit
    22.06.2017.
    Beiträge
    186

    Standard

    Ist ein Sicherheitsflag. Sicherheit > Benutzbarkeit != Usability !! Bitte nicht aushebeln.

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •