wake-up-neo.com

Der Stil wurde abgelehnt, da der MIME-Typ "text/html" nicht als Mimetyp "Stylesheet" unterstützt wird und die strenge MIME-Prüfung aktiviert ist

Wir haben eine Site in der Produktion mit xyz-Webmastern. Unten finden Sie zwei Screenshots der Webkonsole, wenn der Fehler in zwei verschiedenen Fällen auftritt.

 enter image description here  enter image description here

Wir stehen dieser Frage zeitweise und nicht konsequent gegenüber. Darüber hinaus tritt dies bei wenigen Benutzern und nicht bei allen Benutzern auf (ich weiß nicht, ob dies mit der Region zusammenhängt oder nicht). Wenn dieses Problem auftritt, wird die Seite nicht ordnungsgemäß geladen. Nach einigen Aktualisierungsversuchen wird die Seite ordnungsgemäß geladen, und alles andere funktioniert wie erwartet.

Es ist bekannt, dass Webmaster die strenge MIME-Typüberprüfung aktiviert haben.

Die URL-Pfade aller Ressourcen (.js- und .css-Dateien) sind korrekt .. _ Der in Origin für diese Dateien festgelegte MIME-Typ ist korrekt. Nachfolgend finden Sie den Code-Ausschnitt der .jsp-Seite, auf den sich diese Dateien beziehen.

        <link rel="stylesheet" href="${pageContext.request.contextPath}/static/css/bootstrap/bootstrap.min.css" type="text/css" />
    <link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/static/css/jquery/jquery-ui.css" type="text/css" />

    <script src="${pageContext.request.contextPath}/static/js/jquery/jquery.min.js" type="text/javascript" ></script>
    <script src="${pageContext.request.contextPath}/static/js/bootstrap/bootstrap.min.js" type="text/javascript"></script>   
    <script src="${pageContext.request.contextPath}/static/js/jquery/jquery.slimscroll.min.js" type="text/javascript"></script>
    <script src="${pageContext.request.contextPath}/static/js/jquery/jquery.dataTables.min.js" type="text/javascript"> </script>

Nach meinem Verständnis funktioniert der Anforderungsablauf wie in diesem kleinen Diagramm.

 enter image description here

Ich vermute, dass das Problem von Webmaster-Servern verursacht wird, wenn sie eine Antwort an den Client-Browser senden (Schritt 4). Nachdem sie die Antwort vom App-Server gelesen haben, vermute ich, dass der Server nicht den gleichen Inhaltstyp der Datei (.css/.js) verwaltet. Bevor ich dies behaupte, möchte ich mein Verständnis bestätigen, aber ich habe keine Werkzeuge, um dies zu beweisen, da es nur in der Produktion geschieht. Wir sehen dieses Problem in unserer Entwicklungsumgebung nicht zum Debuggen !!!

Bei Webmastern liegt das Problem im Anwendungscode. Was ich in unserem Code sehen kann, ist der Typ für jede .js/.css-Datei in der .jsp-Datei. Was ich sehe, ist, dass der Browser die Antwort von Webmastern NICHT akzeptiert. Da wir rel = "stylesheet" beibehalten, geben Sie type = "text/css" für CSS-Dateien und type = "text/javascript" für alle Javascript-Dateien an, die ich nicht spreche Problem auf dem Anwendungsserver nicht sehen !!

Vielen Dank im Voraus für Ihre Ratschläge.

  • Edit 1: Mimetypen in web.xml hinzugefügt, wie folgt:

    <mime-mapping>    
        <extension>js</extension>        
        <mime-type>application/javascript</mime-type>        
    </mime-mapping>
    <mime-mapping>    
        <extension>css</extension>        
        <mime-type>text/css</mime-type>        
    </mime-mapping>
    

Hinzufügen von Mimetypen zu "server.xml" im Liberty-Server (siehe unten).

<mimeTypes>
    <type>js=application/javascript</type>
    <type>css=text/css</type>
</mimeTypes>

Trotzdem bekommen wir oft einen Mime-Typ-Konflikt im Browser. Das Webmaster-Team behauptet, dass der Anwendungsserver falsche Inhalte ohne vernünftige Informationen senden muss.

  • Edit 2: Dann habe ich getestet, welche Header die Ressourcen (js/css-Dateien) mit dem folgenden Befehl senden.

    curl -I https: //myapplication/static/js/angular/angular.min.js Nachfolgend die Antwort, die ich bekomme. Es wird immer die gleiche Antwort zurückgegeben, wenn ich die Schleife 100 Mal ausführt.

HTTP/1.1 200 OK 
X-Backside-Transport: OK OK  
Content-Language: en-US
Content-Length: 168517
**Content-Type: application/javascript**  
Date: Tue, 19 Jun 2018 10:38:25 GMT 
Last-Modified: Tue, 29 May 2018 17:04:10 GMT 
X-Powered-By: Servlet/3.1 
X-Global-Transaction-ID: 1178221711
Connection: close

Ich sehe also kein Problem auf der Seite des Anwendungsservers.

- Edit 3: Wenn Webmaster vorschlugen, dass ein veralteter Cache-Speicher diese Art von Problemen erzeugen könnte, wird der Cache-Speicher von seiner Seite deaktiviert. Ich habe zusätzlich serverseitigen Code geschrieben, um sicherzustellen, dass der Cache deaktiviert ist. Unten ist der Code-Ausschnitt als Referenz:

response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
response.setHeader("Pragma", "no-cache"); // HTTP 1.0.
response.setHeader("Expires", "0"); // Proxies.

Um sicherzustellen, dass die Ressource vom Server und nicht vom Cache geladen wird, sehen Sie in den Entwicklertools auf die Registerkarte Netzwerk. Wenn die Ressource 200 Statuscode angibt, wird sie erfolgreich vom Server geladen. Wenn der Statuscode 304 lautet, wird er aus dem Cache geladen.

- Edit 4: Ich weiß nicht, wie die Webmaster eine SSL-Verbindung aufbauen. Wenn eine SSL-Verbindung nicht ordnungsgemäß hergestellt wurde, wird der Inhalt als Text/HTML angezeigt. Zu diesem Zeitpunkt weiß ich nicht, ob das der Fall ist. Ich suche nach allen möglichen Bereichen, um das Problem zu lösen !!!

2
Gana

Die einzige Möglichkeit, dieses Problem zu lösen, besteht darin, die Stile und Skriptdateien in der JSP-Datei inline zu machen. 

Ich habe jede CSS- und JS-Datei minimiert und sie in die JSP-Datei eingefügt.

Dies hat das Problem gelöst !!

0
Gana

Das, was der Client anfordert (HTML/XML), das die Anforderung initiiert, ist im Allgemeinen fast sinnlos und für Einstellung die Mime einer anderen Dateianforderung hoffnungslos. Das Server-Antwort bestimmt letztendlich, wie die Antwort des MIME-Typs sein wird. Es gibt im Allgemeinen zwei Möglichkeiten, dies zu tun.

In den meisten Fällen haben bei Apache HTTP-Servern alle Dateien mit den gleichen Erweiterungen den gleichen Mimetyp, sodass alle * .js-Dateien im Beispiel den Mimetyp application/javascript haben.

Einstellen des Mime-Typs über Apache .htaccess-Datei:

AddType text/css .css
AddType application/javascript .js

Manchmal verwenden Leute Apache-Umschreibungen oder andere erweiterte Methoden, und gelegentlich gibt es keine Dateierweiterungen. Die Mime-Typen können den Dateien einzeln hinzugefügt werden.

Mime-Typ über PHP einstellen:

header('Content-Type: text/css; charset=UTF-8');//Use only in .css files.
header('Content-Type: application/javascript; charset=UTF-8');//Use only in .js files.

Wenn Sie aus irgendeinem Grund PHP in einer .css-Datei ausführen müssen, verwenden Sie dies in der .htaccess-Datei und verwenden Sie den obigen Code, um sicherzustellen, dass der Header der Datei dem Browser den richtigen Mime-Typ anzeigt.

AddType application/x-httpd-php5 .css .html

Was die Ursachen der zeitweiligen Probleme anbelangt, bin ich mir nicht sicher, da ich alle meines eigenen Codes schreibe, um dieses und andere Probleme zu vermeiden, auf die Sie stoßen. Natürlich haben die meisten Menschen diese Option nicht. Der beste Fall, den ich bei der Suche nach den Ursachen des Problems empfehlen kann, besteht darin, zu bestimmen, was den Header für die Dateien festlegt (z. B. eine CSS-Datei, die als HTML-Datei bereitgestellt wird). Wenn Sie bereits Servercode wie PHP in diesen Dateien ausgeführt haben, müssen Sie ihn überschreiben (z. B. mit PHP oben). Es ist kritisch zu verstehen, dass die Kopfzeilen müssen zuerst gesendet werden bevor Inhalte gesendet werden, ansonsten werden die Kopfzeilen bestenfalls unsichtbar und im schlimmsten Fall die Dateianforderung beschädigt. Ich vermute, die Datei, bei der Sie Probleme haben, enthält wahrscheinlich serverseitigen Code. Wenn dies von Natur aus nicht ist, empfehle ich, sie über FTP herunterzuladen und direkt zu überprüfen, ob die Inhalte auf Ihrem Liveserver mit denen auf Ihrem Entwicklungscomputer übereinstimmen (z. B. wurden diese Dateien gehackt).

Darüber hinaus hat das von Ihnen gepostete XML keine Auswirkung auf alle vom Server angeforderten Informationen (es sei denn, dies wird von irgendwo als offiziell von den Servern von Amazon unterstützt bezeichnet) beschrieben.

1
John