Ressource interprétée comme feuille de style mais transférée avec du type MIME text / html (ne semble pas liée au serveur Web)


191

J'ai ce problème. Chrome continue de renvoyer cette erreur

Ressource interprétée comme une feuille de style mais transférée avec du type MIME text / html

Les fichiers affectés par cette erreur sont juste le style, choisi et jquery-gentleselect (les autres fichiers CSS qui sont importés dans l'index de la même manière fonctionnent bien et sans erreur). J'ai déjà vérifié mon type MIME et text / css est déjà sur CSS.

Honnêtement, j'aimerais commencer par comprendre le problème (une chose que je ne peux pas faire seul).


Pouvez-vous fournir l'URL de cette feuille de style?
Mr Lister

Juste au cas où quelqu'un en aurait besoin. Cela m'arrivait à cause de la compression du fichier css. Et d'une manière ou d'une autre après deux temps de compression, un en local, un de mon fournisseur CDN, le serveur ne peut plus le reconnaître.
LYu

Cela m'est arrivé lorsque la requête d'une balise de feuille de style était redirigée sur le serveur en raison d'un problème de commande du middleware (middleware d'authentification avant le service de fichier statique). Le message d'erreur dans la console Resource interpreted as Stylesheet but transferred with MIME type text/html: "http://localhost:3000/login". login:1 Uncaught SyntaxError: Unexpected token <montrait l'URL de la page redirigée au lieu de la requête css d'origine, ce qui rendait la traçabilité un peu difficile.
vaughan

J'ai moi aussi vécu ce que @vaughan a rencontré. C'était parce que la feuille de style nécessitait une authentification. . . sur une page qui tentait d'effectuer l'authentification. Problème vraiment difficile à résoudre, mais une fois que vous l'avez compris, cela semble assez évident.
Todd R

De nombreuses personnes ont ajouté différentes solutions à ce problème dans différents environnements. J'ai dû beaucoup faire défiler avant de trouver le mien (Reactjs). N'abandonnez pas si vous ne trouvez pas le vôtre près du sommet, comme d'habitude dans SO.
Juan Lanus

Réponses:


87

je voudrais commencer par comprendre le problème

Les navigateurs envoient des requêtes HTTP aux serveurs. Le serveur fait alors une réponse HTTP.

Les demandes et les réponses se composent d'un ensemble d'en-têtes et d'un corps (parfois facultatif) contenant du contenu.

S'il y a un corps, l'un des en-têtes est le Content-Type qui décrit ce qu'est le corps (est-ce un document HTML? Une image? Le contenu d'une soumission de formulaire? Etc.).

Lorsque vous demandez votre feuille de style, votre serveur indique au navigateur qu'il s'agit d'un document HTML ( Content-Type: text/html) au lieu d'une feuille de style ( Content-Type: text/css).

J'ai déjà vérifié mon myme.type et text / css est déjà sur css.

Ensuite, quelque chose d'autre sur votre serveur est de faire en sorte que cette feuille de style soit livrée avec le mauvais type de contenu.

Utilisez l'onglet Net des outils de développement de votre navigateur pour examiner la demande et la réponse.


4
Je pense que je suis assez sûr que le problème est dans mon .htaccess qui est pastebin.com/w8UnqFs8 (j'ai oublié de mentionner que cette erreur ne me donne que dans le sous-répertoire et seulement après un rafraîchissement de la page). Merci pour votre explication, a été très utile pour comprendre le problème. :)
Max

Assurez-vous que vous pouvez accéder au fichier sans vous connecter.
Waqar

1
@Max pourquoi ne pas mettre cette information dans la question réelle? :)
myrdd

102

Vous utilisez Angular?

C'est une mise en garde très importante à retenir.

La balise de base doit non seulement être dans la tête, mais au bon endroit.

J'avais ma balise de base au mauvais endroit dans la tête, elle devrait venir avant toutes les balises avec des demandes d'URL. En gros, le placer comme deuxième balise sous le titre l'a résolu pour moi.

<base href="/">

J'ai écrit un petit article dessus ici


2
en utilisant ng-hrefau lieu de le hrefrésoudre pour moi!
Peter Wilson

J'obtenais une erreur d'analyse OTS: balise de version non valide à la place, mais j'ai trouvé cela lors de la recherche d'une solution et oh mon dieu, cela m'a sauvé.
Patrick Graham

1
Dans mon cas, j'utilisais une règle de réécriture .htaccess pour changer un répertoire en une variable de chaîne de requête, comme celle-ci:RewriteRule ^my_dir/(.+)$ /new_dir/?my_var=$1 [L,QSA]
lincolnberryiii

Comme Max, cela a résolu mon problème malgré le fait que je n'utilise pas Angular. J'ai placé le lien / href incriminé en premier, devant tous les autres liens, dans ma section principale - et l'avertissement a disparu.

peut vouloir renommer votre titre dans votre article. Je n'utilise même pas Angular. J'utilise Swift + Leaf et cela a résolu mon problème.
swift nub

40

J'ai également eu un problème avec cette erreur et j'ai trouvé une solution. Cela n'explique pas pourquoi l'erreur s'est produite, mais cela semble la corriger dans certains cas.

Incluez une barre oblique / avant le chemin du fichier css, comme ceci:

<link rel="stylesheet" href="https://stackoverflow.com/css/bootstrap.min.css">


est-ce pertinent dans ce cas?
Gilles Gouaillardet

2
J'avais perdu trop de temps sur cette petite erreur. Si quelqu'un lit ma réponse et que cela l'aidera, ce sera pertinent dans ce cas.
Trilochan

2
Ce qui s'est réellement passé, c'est que le serveur a servi le fichier /css/bootstrap.min.css, mais lorsque vous ne l'avez pas inclus, /il le regarde simplement dans le répertoire actuel, par exemple si vous y êtes allé yoursite.com/hello/trilochan, il regardera ensuite en dessous hello/css/bootsrap.min.css, mais il est vraiment en dessous yoursite.com/css/bootsrap.min.css, j'espère que j'ai effacé ceci, /fait référence à la racine, et sans /, il regarde dans le répertoire courant.
Suraj Jain

1
@GillesGouaillardet C'était très pertinent, j'avais le même problème.
Suraj Jain

Je vous recommande vivement le bootcamp développeur web sur udemy by colt steele, cela vous aidera à dissiper vos doutes.
Suraj Jain

17

Mon problème était plus simple que toutes les réponses de cet article.

J'ai dû configurer IIS pour inclure du contenu statique.

entrez la description de l'image ici


10

Essaye ça <link rel="stylesheet" type="text/css" href="../##/yourcss.css">

## est votre dossier dans lequel se trouve votre fichier .CSS

N'oubliez pas les: ..(doubles points).


J'ai ajouté des doubles points et une barre oblique (../ file_path). cela a fonctionné pour moi. merci
Vidhya

Quelle est la raison de l'ajout de ces deux..
Pardeep Jain

10

La définition des informations d'identification d'authentification anonymes sur l' identité du pool d'applications a fait l'affaire pour moi.

entrez la description de l'image ici


9

J'étais également confronté au même problème. Et après avoir fait de la R&D, j'ai trouvé que le problème venait du nom du fichier. Le nom du fichier actuel était "lightgallery.css" mais lors de la liaison, j'ai tapé "lightGallery.css" .

Plus d'informations:

Cela a bien fonctionné sur mon hôte local (OS: Windows 8.1 et serveur: Apache). Mais lorsque j'ai téléchargé mon application sur un serveur distant (OS et serveur Web différents de ceux de mon hôte local), cela ne fonctionnait pas, me donnant la même erreur que le vôtre.

Le problème était donc la sensibilité à la casse (en ce qui concerne les noms de fichiers) du serveur.


Merci, je me cassais la tête à cause d'une faute d'orthographe.
Nischal Kumar BC

7

Sur la base des autres réponses, il semble que ce message ait de nombreuses causes, j'ai pensé partager ma solution individuelle au cas où quelqu'un aurait mon problème exact à l'avenir.

Notre site charge les fichiers CSS à partir d'une distribution AWS Cloudfront, qui utilise un compartiment S3 comme origine. Ce compartiment S3 particulier a été synchronisé avec un serveur Linux exécutant Jenkins. La synccommande via s3cmddéfinit automatiquement le type de contenu de l'objet S3 en fonction de ce que dit le système d'exploitation (probablement en fonction de l'extension de fichier). Pour une raison quelconque, sur notre serveur, tous les types étaient correctement définis, sauf les .cssfichiers, auxquels il donnait le type text/plain. Dans S3, lorsque vous vérifiez les métadonnées dans les propriétés d'un fichier, vous pouvez définir le type comme vous le souhaitez. Le paramétrer pour text/csspermettre à notre site d'interpréter correctement les fichiers en CSS et de se charger correctement.


6

Si vous servez du CSS statique avec nginx, vous devez ajouter

location ~ \.css {
    add_header  Content-Type    text/css;
}
location ~ \.js {
    add_header  Content-Type    application/x-javascript;
}

ou

location ~ \.css{
    default_type text/css;
}
location ~ \.js{
    default_type application/x-javascript;
}

à nginx conf


5

La réponse de @Rob Sedgwick m'a donné un pointeur, cependant, dans mon cas, mon application était une application Spring Boot . Je viens donc d'ajouter des exclusions dans ma configuration de sécurité pour les chemins vers les fichiers concernés ...

REMARQUE - Cette solution est basée sur SpringBoot ... Ce que vous devrez peut-être faire peut différer en fonction du langage de programmation que vous utilisez et / ou du framework que vous utilisez

Cependant, le point à noter est;

Essentiellement, le problème peut être causé lorsque chaque demande, y compris celles relatives au contenu statique, est authentifiée.

Alors disons que certains chemins vers mon contenu statique qui causaient les erreurs sont les suivants;

Un chemin appelé "plugins"

http: // localhost: 8080 / plugins / styles / css / file-1.css

http: // localhost: 8080 / plugins / styles / css / file-2.css

http: // localhost: 8080 / plugins / js / script-file.js

Et un chemin appelé "pages"

http: // localhost: 8080 / pages / styles / css / style-1.css

http: // localhost: 8080 / pages / styles / css / style-2.css

http: // localhost: 8080 / pages / js / scripts.js

Ensuite, j'ajoute simplement les exclusions comme suit dans ma configuration de sécurité Spring Boot;

@Configuration
@EnableGlobalMethodSecurity(prePostEnabled = true)
@Order(SecurityProperties.ACCESS_OVERRIDE_ORDER)
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
            .antMatchers(<comma separated list of other permitted paths>, "/plugins/**", "/pages/**").permitAll()
            // other antMatchers can follow here
    }

}


L'exclusion de ces chemins "/plugins/**"et "/pages/**"de l'authentification a fait disparaître les erreurs.


À votre santé!


@Ben Rhys-Lewis ... Je me demande pourquoi vous pensez que c'est une question ou même en ressemble à une d'ailleurs. Peut-être, vous voulez lire ma réponse assez attentivement pour voir que c'est en fait une RÉPONSE - hélas, une qui a fonctionné dans mon cas ... et n'est certainement PAS une question.
SourceVisor

Désolé mon mauvais. Je ne sais pas comment cela s'est passé, j'ai fait un boo-boo. Veuillez accepter mes excuses.
Ben Rhys-Lewis le

4

Utilisation angulaire

Dans mon cas, utiliser ng-hrefau lieu de le hrefrésoudre pour moi.

Remarque :

Je travaille avec laravel comme back-end


Mais où ajouter cela?
Pardeep Jain

dans la balise de lien
Peter Wilson

3

J'étais confronté à la même chose, avec une sorte du même fichier .htaccess pour créer de jolies URL. après quelques heures de recherche et d'expérimentation. J'ai découvert que l'erreur était due à des fichiers relativement liés.

le navigateur commencera à récupérer le même fichier html source pour tous les fichiers css, js et image, lorsque je parcourrais quelques étapes profondément dans le serveur.

pour contrer cela, vous pouvez soit utiliser la <base>balise sur votre source html,

<base href="http://localhost/assets/">

et un lien vers des fichiers comme,

<link rel="stylesheet" type="text/css" href="css/style.css" />
<script src="js/script.js"></script>

ou utilisez des liens absolus pour tous vos fichiers.

<link rel="stylesheet" type="text/css" href="http://localhost/assets/css/style.css" />
<script src="http://localhost/assets/js/script.js"></script>
<img src="http://localhost/assets/images/logo.png" />

3

Si vous êtes sur JSP, ce problème peut provenir de votre mappage de servlet. si votre mappage prend l'URL par défaut comme ceci:

@WebServlet("/")

puis le conteneur interprète votre url css et accède au servlet au lieu d'aller dans le fichier css.

J'ai eu le même problème, j'ai changé ma cartographie et maintenant tout fonctionne


2

J'ai un problème similaire dans MVC4 en utilisant l'authentification par formulaire. Le problème était cette ligne dans le web.config,

<modules runAllManagedModulesForAllRequests="true">

Cela signifie que chaque demande, y compris celles relatives au contenu statique, est authentifiée.

Remplacez cette ligne par:

<modules runAllManagedModulesForAllRequests="false">

2

entrez la description de l'image ici Je suis également confronté à ce problème récemment sur chrome . Je donne juste le chemin absolu à mon problème de fichier CSS.

<link rel="stylesheet" href="<?=SS_URL?>arica/style.css" type="text/css" />

Vous devez vous moquer de moi. J'ai rejeté cette solution comme 3 fois. Je suis venu sur cette page plusieurs fois mais après avoir tout essayé et sur le point d'abandonner, j'ai dit: "diable qu'est-ce qui pourrait mal tourner". Ça a marché!!! Mystère de la vie
Kermit_ice_tea

1

Je veux développer le point de Todd R dans l'OP. Dans les pages asp.net, le web.configfichier définit les autorisations nécessaires pour accéder à chaque fichier ou dossier de l'application. Dans notre cas, le dossier des fichiers CSS n'autorisait pas l'accès pour les utilisateurs non autorisés, provoquant son échec sur la page de connexion avant que l'utilisateur ne soit autorisé. La modification des autorisations requises dans web.configles utilisateurs non autorisés autorisés à accéder aux fichiers CSS et a résolu ce problème.


0

Au cas où quelqu'un viendrait à ce message et aurait un problème similaire. Je viens de rencontrer un problème similaire, mais la solution était assez simple.

Un développeur avait par erreur déposé une copie de web.config dans le répertoire CSS. Une fois supprimées, toutes les erreurs ont été résolues et la page correctement affichée.


Merci @Rohit Gupta pour la modification. Je tapais plus vite que mon gestionnaire de grammaire interne ne le ferait! =)
Hideous1

3
Il s'agit d'une solution spécifique à ASP.NET, qui n'est pas une partie évidente de la question.
dakab le

@dakab et alors? Un grand nombre des autres réponses sont également spécifiques au cadre, et elles ont aidé les gens à utiliser ces cadres qui rencontrent le même problème.
jsabrooke

0

Je suis tombé sur le même problème en reprenant le travail sur un ancien projet de pile MEAN. J'utilisais nodemoncomme serveur de développement local et j'ai eu la même erreur Resource interpreted as stylesheet but transferred with MIME type text/html. J'ai changé de nodemonà http-serverqui peut être trouvé ici . Cela a immédiatement fonctionné pour moi.


0

C'est parce que vous devez avoir défini le type de contenu comme texte / html au lieu de texte / css pour la page de votre serveur (php, node.js, etc.)


1
ce problème concernait un fichier css, pas un fichier html
Max

0

Cela s'est produit lorsque j'ai supprimé le protocole du lien css pour une feuille de style css servie par un google CDN.

Cela ne donne aucune erreur:

<link rel="stylesheet" href="//fonts.googleapis.com/css?family=Architects+Daughter">

Mais cela donne l'erreur Resource interprétée comme une feuille de style mais transférée avec le type MIME text / html :

<link rel="stylesheet" href="fonts.googleapis.com/css?family=Architects+Daughter">

0

J'étais confronté à un problème similaire. Et explorez les solutions dans cette fantastique page Stack Overflow.

La réponse de user54861 ​​(noms incompatibles en cas de sensibilité à la casse) me rend curieux d'inspecter à nouveau mon code et de réaliser que " je n'ai pas téléchargé deux fichiers js que je les ai chargés dans la balise head ". :-)

Lorsque je les ai téléchargés, le problème s'enfuit! Et le code s'exécute et la page est rendue sans autre erreur!

Donc, la morale de l'histoire est de ne pas oublier de vous assurer que tous vos fichiers js sont téléchargés là où la page les recherche.


Cela ne répond pas vraiment à la question. Si vous avez une autre question, vous pouvez la poser en cliquant sur Poser une question . Vous pouvez également ajouter une prime pour attirer davantage l'attention sur cette question une fois que vous avez suffisamment de réputation . - De l'avis
Lemon Kazi

Vous ne pouvez pas être un indice pour que les concepteurs de scripts ecma ajoutent une erreur ou une exception pertinente à javascript si le développeur n'a pas chargé la ressource sur le serveur? Je veux dire "Ressource interprétée comme une feuille de style mais transférée avec du texte de type MIME / html" est un peu déroutante, n'est-ce pas?
Hossein Khalesi

0

Je suis tombé sur le même problème avec une application .NET, un CMS open-source appelé MojoPortal. Dans l'un de mes thèmes et skin pour un site particulier, lors de la navigation ou du test, il grinçait et ralentissait comme s'il étouffait.

Mon problème n'était pas de l'attribut "type" pour le CSS mais c'était "cette autre chose". Mon changement exact était dans le Web.Config . J'ai changé toutes les valeurs en FALSE pour MinifyCSS, CacheCssOnserver et CacheCSSinBrowser.

Une fois que cela a été défini, le site Web était de nouveau en production rapide.


0

J'ai eu la même erreur parce que j'ai oublié d'envoyer un en-tête correct un premier

header("Content-type: text/css; charset: UTF-8");
print 'body { text-align: justify; font-size: 2em; }';

0

En utilisant ReactJs, lorsque j'ajoute un fichier de style à index.html en utilisant un lien relatif tel que

<link rel="stylesheet" href="./css/style.css">

et puis je navigue vers une route dire; localhost:3000/artistet rafraîchir, j'obtiens l'erreur.

L'erreur a disparu après avoir remplacé le lien relatif par un lien absolu, disons;

<link rel="stylesheet" href="http://localhost/project/public/css/style.css".


J'ai eu ce problème, le même environnement et j'ai essayé votre solution sans succès. Mais vous m'avez montré un chemin de recherche :-) Les messages ont disparu après avoir déplacé les fichiers CSS dans le dossier public. Une fois que je l'ai fait, il n'y avait pas besoin des chemins absolus.
Juan Lanus

0

J'ai rencontré ce problème lors du chargement de CSS pour un module de mise en page React que j'ai installé avec npm. Vous devez importer deux fichiers .css pour que ce module fonctionne, donc je les ai initialement importés comme ceci:

@import "../../../../node_modules/react-grid-layout/css/styles.css";

mais a découvert que l'extension de fichier doit être supprimée, donc cela a fonctionné:

@import "../../../../node_modules/react-grid-layout/css/styles";

0

Si nodejs et en utilisant express, le code ci-dessous fonctionne ...

res.set('Content-Type', 'text/css');

Commenter ici car il est lié à Node.JS. J'ai dû redémarrer l'application sur mon fournisseur d'hébergement
Reed

0

J'ai exactement le même problème et après quelques minutes à me tromper, j'ai déchiffré que j'avais manqué d'ajouter l'extension de fichier à mon en-tête. j'ai donc changé la ligne suivante:

<link uic-remove rel="stylesheet" href="css/bahblahblah">

à

<link uic-remove rel="stylesheet" href="css/bahblahblah.css"> 

0

J'ai commencé à avoir le problème aujourd'hui uniquement sur chrome et non sur Safari pour le même projet / URL pour mon conteneur goormide (node.js)

Après avoir essayé plusieurs suggestions ci-dessus qui ne semblaient pas fonctionner et revenir en arrière sur certaines modifications de code que j'ai apportées d'hier à aujourd'hui, ce qui n'a également fait aucune différence, j'ai fini dans les paramètres de chrome en cliquant sur:

1. paramètres;

2. faites défiler vers le bas, sélectionnez: "Avancé";

3. faites défiler vers le bas, sélectionnez: "Restaurer les paramètres par défaut";

Cela semble avoir résolu le problème car je ne reçois plus l'avertissement / l'erreur dans la console et la page s'affiche comme il se doit. En lisant les articles ci-dessus, il semble que le problème peut survenir à partir de n'importe quel nombre de sources, de sorte que la réinitialisation des paramètres est un correctif générique potentiel. À votre santé


0

Si vous diffusez l'application en production, assurez-vous que vous diffusez les fichiers statiques avec le service worker. J'ai eu cette erreur lorsque je ne servais que le sous-dossier statique de React build sur Django (sans les actifs qui ont des styles)


0

Utilisation de React

Je suis tombé sur cette erreur dans mon application de profil de réaction. Mon application s'est comportée un peu comme si elle essayait de référencer une URL qui n'existe pas. Je pense que cela a quelque chose à voir avec le comportement de Webpack.

Si vous liez des fichiers dans votre dossier public, vous devez vous rappeler d'utiliser% PUBLIC_URL% avant la ressource comme ceci:

<link type="text/css" rel="stylesheet" href="%PUBLIC_URL%/bootstrap.min.css" />
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.