Sumber daya diartikan sebagai stylesheet tetapi ditransfer dengan tipe teks MIME / html (tampaknya tidak terkait dengan server web)

191

Saya punya masalah ini. Chrome terus mengembalikan kesalahan ini

Sumber daya diartikan sebagai stylesheet tetapi ditransfer dengan tipe teks MIME / html

File-file yang dipengaruhi oleh kesalahan ini hanyalah Style, terpilih dan jquery-gentleselect (file CSS lain yang diimpor dalam indeks dengan cara yang sama berfungsi dengan baik dan tanpa kesalahan). Saya sudah memeriksa tipe MIME saya dan teks / css sudah ada di CSS.

Jujur saya ingin memulai dengan memahami masalah (hal yang sepertinya tidak bisa saya lakukan sendiri).

Maks
sumber
Bisakah Anda memberikan URL stylesheet ini?
Tn. Lister
Untuk berjaga-jaga jika seseorang membutuhkan ini. Ini terjadi pada saya karena kompresi file css. Dan entah bagaimana setelah dua kali kompresi, satu di lokal, satu dari penyedia CDN saya, server tidak dapat mengenalinya lagi.
LYu
Ini terjadi pada saya ketika permintaan tag stylesheet sedang dialihkan di server karena masalah pemesanan middleware (auth middleware sebelum penyajian file statis). Pesan kesalahan di konsol Resource interpreted as Stylesheet but transferred with MIME type text/html: "http://localhost:3000/login". login:1 Uncaught SyntaxError: Unexpected token <menunjukkan url halaman yang dialihkan alih-alih permintaan css asli yang membuatnya agak sulit untuk dilacak.
vaughan
Saya juga mengalami apa yang @vaughan hadapi. Itu karena stylesheet memerlukan otentikasi. . . pada halaman yang mencoba melakukan otentikasi. Masalah yang sangat sulit untuk dipecahkan, tetapi setelah Anda mengetahuinya, tampaknya cukup jelas.
Todd R
Banyak orang telah menambahkan solusi berbeda untuk masalah ini di lingkungan yang berbeda. Saya harus banyak menggulir sebelum menemukan milik saya (Reactjs). Jangan menyerah jika Anda tidak menemukan Anda di dekat bagian atas seperti biasa dalam SO.
Juan Lanus

Jawaban:

87

Saya ingin memulai dengan memahami masalahnya

Browser membuat permintaan HTTP ke server. Server kemudian membuat respons HTTP.

Baik permintaan dan tanggapan terdiri dari sekelompok tajuk dan badan (terkadang opsional) dengan beberapa konten di dalamnya.

Jika ada tubuh, maka salah satu header adalah Content-Typeyang menggambarkan apa tubuh itu (apakah itu dokumen HTML? Gambar? Isi pengajuan formulir? Dll).

Saat Anda meminta stylesheet Anda, server Anda memberi tahu browser bahwa itu adalah dokumen HTML ( Content-Type: text/html) alih-alih stylesheet ( Content-Type: text/css).

Saya sudah memeriksa myme.type saya dan teks / css sudah ada di css.

Kemudian ada hal lain tentang server Anda yang membuat stylesheet datang dengan tipe konten yang salah.

Gunakan tab Net alat pengembang browser Anda untuk memeriksa permintaan dan respons.

Quentin
sumber
4
saya berpikir bahwa im cukup yakin bahwa masalah adalah di .htaccess saya yang adalah pastebin.com/w8UnqFs8 (saya lupa menyebutkan bahwa kesalahan ini memberi saya hanya dalam subdirektori dan hanya setelah refresh halaman). Terima kasih atas penjelasan Anda, cukup membantu untuk memahami masalahnya. :)
Max
Pastikan Anda dapat mengakses file tanpa masuk.
Waqar
1
@ Max mengapa Anda tidak memasukkan info itu ke pertanyaan sebenarnya? :)
myrdd
102

Menggunakan sudut?

Ini adalah peringatan yang sangat penting untuk diingat.

Tag dasar harus tidak hanya berada di kepala tetapi di lokasi yang tepat.

Saya memiliki tag dasar saya di tempat yang salah di kepala, seharusnya ada sebelum tag dengan permintaan url. Pada dasarnya menempatkannya sebagai tag kedua di bawah judul menyelesaikannya untuk saya.

<base href="/">

Saya menulis sedikit posting di sini

Sten Muchow
sumber
2
menggunakan ng-hrefalih-alih hrefmemecahkannya untuk saya!
Peter Wilson
Saya mendapatkan kesalahan parsing OTS: tag versi yang tidak valid sebagai gantinya, tetapi menemukan ini ketika mencari solusi dan oh my god, ini menyelamatkan saya.
Patrick Graham
1
Dalam kasus saya, saya menggunakan aturan penulisan ulang .htaccess untuk mengubah direktori ke variabel string kueri, seperti:RewriteRule ^my_dir/(.+)$ /new_dir/?my_var=$1 [L,QSA]
lincolnberryiii
Seperti Max, ini memperbaiki masalah saya meskipun saya tidak menggunakan Angular. Saya menempatkan tautan yang menyinggung / href terlebih dahulu, di depan semua tautan lainnya, di bagian kepala saya - dan peringatan itu hilang.
mungkin ingin mengganti nama judul Anda di artikel Anda. Saya bahkan tidak menggunakan Angular. Saya menggunakan Swift + Leaf dan ini memecahkan masalah saya.
Swift nub
40

Saya juga punya masalah dengan kesalahan ini, dan menemukan solusi. Ini tidak menjelaskan mengapa kesalahan terjadi, tetapi tampaknya untuk memperbaikinya dalam beberapa kasus.

Sertakan garis miring / sebelum path ke file css, seperti:

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

Trilochan
sumber
apakah ini relevan dalam kasus ini?
Gilles Gouaillardet
2
Saya telah kehilangan banyak waktu karena kesalahan kecil ini. Jika seseorang akan membaca jawaban saya dan itu akan membantunya itu akan relevan dalam kasus ini.
Trilochan
2
Apa yang sebenarnya terjadi adalah server menyajikan file /css/bootstrap.min.css, tetapi ketika Anda tidak memasukkannya, /ia hanya akan melihatnya di direktori saat ini, misalnya jika Anda pergi ke yoursite.com/hello/trilochan, itu akan terlihat di bawah hello/css/bootsrap.min.css, tetapi itu benar-benar di bawah yoursite.com/css/bootsrap.min.css, saya harap saya membersihkan ini, /merujuk ke root, dan tanpa /, itu terlihat di direktori saat ini.
Suraj Jain
1
@GillesGouaillardet Itu sangat relevan, saya punya masalah yang sama.
Suraj Jain
Saya akan sangat merekomendasikan kepada Anda pengembang web bootcamp di udemy oleh colt steele, ini akan membantu Anda menghapus keraguan Anda.
Suraj Jain
17

Masalah saya lebih sederhana daripada semua jawaban di pos ini.

Saya harus mengatur IIS untuk memasukkan konten statis.

masukkan deskripsi gambar di sini

JEuvin
sumber
10

Coba ini <link rel="stylesheet" type="text/css" href="../##/yourcss.css">

dimana ##foldermu dimana .CSS - file kamu

Jangan lupa tentang: ..(titik ganda).

seq
sumber
Saya menambahkan dua titik dan garis miring (../ file_path). itu berhasil untuk saya. terima kasih
Vidhya
Apa alasan menambahkan keduanya..
Pardeep Jain
10

Mengatur Kredensial Otentikasi Anonim ke Application Pool Identity telah membantu saya.

masukkan deskripsi gambar di sini

Felipe Cruz
sumber
9

Saya juga menghadapi masalah yang sama. Dan setelah melakukan beberapa R&D, saya menemukan bahwa masalahnya ada pada nama file. Nama file sebenarnya adalah "lightgallery.css" tetapi saat menautkan saya telah mengetik "lightGallery.css" .

Info lebih lanjut:

Ini bekerja dengan baik di localhost saya (OS: Windows 8.1 & Server: Apache). Tetapi ketika saya mengunggah aplikasi saya ke server jarak jauh (Berbeda OS & server Web daripada localhost saya) itu tidak berfungsi, memberi saya kesalahan yang sama seperti milik Anda.

Jadi, masalahnya adalah sensitivitas kasus (sehubungan dengan nama file) dari server.

Sandeshwar Sharma
sumber
Terima kasih, saya mematahkan kepala karena kesalahan pengejaan.
Nischal Kumar BC
7

Berdasarkan jawaban lain, sepertinya pesan ini memiliki banyak penyebab, saya pikir saya hanya akan membagikan solusi pribadi saya jika ada orang yang memiliki masalah persis dengan saya di masa depan.

Situs kami memuat file CSS dari distribusi AWS Cloudfront, yang menggunakan bucket S3 sebagai asalnya. Ember S3 khusus ini disinkronkan dengan server Linux yang menjalankan Jenkins. The syncperintah melalui s3cmdset Content-Type untuk objek S3 secara otomatis berdasarkan apa yang dikatakan OS (mungkin berdasarkan ekstensi file). Untuk beberapa alasan, di server kami, semua jenis diatur dengan benar kecuali .cssfile, yang memberi jenis text/plain. Di S3, saat Anda memeriksa metadata di properti file, Anda bisa mengatur tipe ke apa pun yang Anda inginkan. Mengaturnya agar text/csssitus kami dapat menginterpretasikan file dengan benar sebagai CSS dan memuat dengan benar.

nicolashahn
sumber
6

Jika Anda melayani css statis dengan nginx, Anda harus menambahkan

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

atau

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

ke nginx conf

Ryabchenko Alexander
sumber
5

@Rob Sedgwick memberi saya petunjuk, Namun, dalam kasus saya aplikasi saya adalah Spring Boot Application . Jadi saya baru saja menambahkan pengecualian di Konfigurasi Keamanan saya untuk jalur ke file yang bersangkutan ...

CATATAN - Solusi ini berbasis SpringBoot ... Apa yang perlu Anda lakukan mungkin berbeda berdasarkan bahasa pemrograman yang Anda gunakan dan / atau kerangka kerja apa yang Anda gunakan

Namun yang perlu diperhatikan adalah;

Pada dasarnya masalah dapat disebabkan ketika setiap permintaan, termasuk yang untuk konten statis diautentikasi.

Jadi katakanlah beberapa jalur ke konten statis saya yang menyebabkan kesalahan adalah sebagai berikut;

Jalur yang disebut "plugin"

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

Dan jalan yang disebut "halaman"

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

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

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

Kemudian saya hanya menambahkan pengecualian sebagai berikut di Konfig Keamanan Boot Spring saya;

@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
    }

}


Mengecualikan jalur ini "/plugins/**"dan "/pages/**"dari otentikasi membuat kesalahan hilang.


Bersulang!

SourceVisor
sumber
@ Ben Rhys-Lewis ... Saya ingin tahu mengapa Anda berpikir ini adalah Pertanyaan atau bahkan terlihat seperti itu. Mungkin, Anda ingin membaca jawaban saya cukup hati-hati untuk melihat bahwa itu sebenarnya JAWABAN - sayangnya, yang berhasil dalam kasus saya ... dan jelas BUKAN Pertanyaan.
SourceVisor
Maaf saya salah. Saya tidak yakin bagaimana itu terjadi, saya membuat boo-boo. Mohon terima permintaan maaf ku.
Ben Rhys-Lewis
4

Menggunakan sudut

Dalam kasus saya menggunakan ng-hrefalih-alih hrefmemecahkannya untuk saya.

Catatan :

Saya bekerja dengan laravel sebagai back-end

Peter Wilson
sumber
Tapi di mana menambahkan ini?
Pardeep Jain
dalam tag tautan
Peter Wilson
3

saya menghadapi hal yang sama, dengan semacam file .htaccess yang sama untuk membuat url cantik. setelah beberapa jam melihat-lihat dan bereksperimen. Saya menemukan bahwa kesalahan itu karena relatif menghubungkan file.

browser akan mulai mengambil file html sumber yang sama untuk semua file css, js dan gambar, ketika saya akan menelusuri beberapa langkah jauh ke dalam server.

untuk mengatasi ini, Anda dapat menggunakan <base>tag pada sumber html Anda,

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

dan tautan ke file seperti,

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

atau gunakan tautan absolut untuk semua file Anda.

<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" />
Light93
sumber
3

Jika Anda menggunakan JSP, masalah ini dapat berasal dari pemetaan servlet Anda. jika pemetaan Anda menggunakan url dengan defaut seperti ini:

@WebServlet("/")

kemudian wadah menafsirkan url css Anda, dan pergi ke servlet alih-alih pergi ke file css.

Saya memiliki masalah yang sama, saya mengubah pemetaan saya dan sekarang semuanya bekerja

Greg Artisi
sumber
2

Saya memiliki masalah serupa di MVC4 menggunakan otentikasi bentuk. Masalahnya adalah baris ini di web.config,

<modules runAllManagedModulesForAllRequests="true">

Ini berarti bahwa setiap permintaan, termasuk permintaan untuk konten statis, sedang diautentikasi.

Ubah baris ini ke:

<modules runAllManagedModulesForAllRequests="false">
Rob Sedgwick
sumber
2

masukkan deskripsi gambar di sini Saya juga menghadapi masalah ini baru-baru ini di chrome . Saya hanya memberikan jalur absolut untuk menyelesaikan masalah file CSS saya.

<link rel="stylesheet" href="<?=SS_URL?>arica/style.css" type="text/css" />
Zaid Bin Khalid
sumber
Anda pasti bercanda. Hentikan solusi ini seperti 3 kali. Datang ke halaman ini beberapa kali, tetapi setelah mencoba yang lain dan hampir menyerah, saya berkata: "apa yang bisa salah". Berhasil !!! Misteri kehidupan
Kermit_ice_tea
1

Saya ingin memperluas titik Todd R di OP. Di halaman asp.net, web.configfile mendefinisikan izin yang diperlukan untuk mengakses setiap file atau folder dalam aplikasi. Dalam kasus kami, folder file CSS tidak memungkinkan akses untuk pengguna yang tidak sah, menyebabkannya gagal pada halaman login sebelum pengguna diotorisasi. Mengubah izin yang diperlukan pada web.configpengguna yang diizinkan yang tidak sah untuk mengakses file CSS dan menyelesaikan masalah ini.

Sandy Gettings
sumber
0

Jika ada yang datang ke posting ini dan memiliki masalah yang sama. Saya baru saja mengalami masalah yang serupa, tetapi solusinya cukup sederhana.

Seorang pengembang keliru menjatuhkan salinan web.config ke direktori CSS. Setelah dihapus, semua kesalahan diselesaikan dan halaman ditampilkan dengan benar.

Hideous1
sumber
Terima kasih @Rohit Gupta untuk hasil editnya. Saya mengetik lebih cepat daripada yang akan diproses oleh manajer tata bahasa internal saya! =)
Hideous1
3
Ini adalah solusi ASP.NET-spesifik, yang tidak ada bagian jelas dari pertanyaan.
dakab
@ Dakab jadi apa? Banyak jawaban lain juga khusus untuk kerangka kerja, dan mereka telah membantu orang menggunakan kerangka kerja yang mengalami masalah yang sama.
jsabrooke
0

Saya menemukan masalah yang sama saat melanjutkan pekerjaan pada proyek tumpukan MEAN lama. Saya menggunakan nodemonserver pengembangan lokal saya dan mendapatkan kesalahan yang sama Resource interpreted as stylesheet but transferred with MIME type text/html. Aku berubah dari nodemonyang http-serveryang dapat ditemukan di sini . Segera bekerja untuk saya.

captainkirk
sumber
0

Itu karena Anda harus menetapkan tipe konten sebagai teks / html alih-alih teks / css untuk halaman server Anda (php, node.js dll)

Ayush Agarwal
sumber
1
masalah ini berkaitan dengan file css, bukan file html
Max
0

Ini terjadi ketika saya menghapus protokol dari tautan css untuk stylesheet css yang dilayani oleh google CDN.

Ini tidak memberikan kesalahan:

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

Tetapi ini memberikan sumber kesalahan yang ditafsirkan sebagai Stylesheet tetapi ditransfer dengan MIME ketik teks / html :

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

Saya menghadapi masalah serupa. Dan Menjelajahi solusi di halaman Stack Overflow yang fantastis ini.

respon pengguna54861 ​​(ketidakcocokan nama dalam hal sensitivitas) membuat saya penasaran untuk memeriksa kode saya lagi dan menyadari bahwa " Saya tidak mengunggah dua file js yang saya muatkan dalam tag kepala ". :-)

Ketika saya mengunggahnya, masalahnya hilang! Kode berjalan dan laman ditampilkan tanpa kesalahan lain!

Jadi, moral dari cerita ini adalah jangan lupa untuk memastikan bahwa semua file js Anda diunggah ke mana halaman mencari mereka.

Hossein Khalesi
sumber
Ini tidak benar-benar menjawab pertanyaan itu. Jika Anda memiliki pertanyaan yang berbeda, Anda dapat menanyakannya dengan mengeklik Ajukan Pertanyaan . Anda juga dapat menambahkan hadiah untuk menarik lebih banyak perhatian ke pertanyaan ini setelah Anda memiliki reputasi yang cukup . - Dari Ulasan
Lemon Kazi
Tidak dapat menjadi petunjuk bagi perancang skrip ecma untuk menambahkan kesalahan yang relevan atau pengecualian pada javascript jika pengembang tidak memuat sumber daya ke server? Maksud saya "Sumberdaya diartikan sebagai stylesheet tetapi ditransfer dengan tipe teks MIME / html" agak membingungkan, bukan?
Hossein Khalesi
0

Saya menemukan masalah yang sama dengan aplikasi .NET, sebuah open-source CMS yang disebut MojoPortal. Di salah satu tema dan skin saya untuk situs tertentu, saat menjelajah atau mengujinya akan menggiling dan melambat seperti tersedak.

Masalah saya bukan dari atribut "type" untuk CSS tapi itu "hal lain". Perubahan persis saya ada di Web.Config . Saya mengubah semua nilai menjadi FALSE untuk MinifyCSS, CacheCssOnserver, dan CacheCSSinBrowser.

Setelah itu diatur, situs web cepat sekali lagi dalam produksi.

HI360
sumber
0

Mengalami kesalahan yang sama karena saya lupa mengirim header yang benar dulu

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

Menggunakan ReactJs, ketika saya menambahkan file gaya ke index.html menggunakan tautan relatif seperti

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

dan kemudian saya menavigasi ke rute mengatakan; localhost:3000/artistdan menyegarkan, saya mendapatkan kesalahan.

Kesalahan menghilang setelah saya mengganti tautan relatif dengan tautan absolut, katakan;

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

Frank Fotangs
sumber
Saya memiliki masalah ini, lingkungan yang sama, dan mencoba solusi Anda tanpa hasil. Tapi Anda menunjukkan saya jalur penelitian :-) Pesan-pesan menghilang setelah saya memindahkan file CSS ke folder publik. Sekali saya melakukannya, tidak perlu jalan absolut.
Juan Lanus
0

Saya mengalami masalah ini ketika memuat CSS untuk modul Layout React yang saya instal dengan npm. Anda harus mengimpor dua file .css untuk menjalankan modul ini, jadi saya awalnya mengimpornya seperti ini:

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

tetapi menemukan bahwa ekstensi file harus dihapus, jadi ini berfungsi:

@import "../../../../node_modules/react-grid-layout/css/styles";
Greg Holst
sumber
0

Jika nodejs dan menggunakan express , kode di bawah ini berfungsi ...

res.set('Content-Type', 'text/css');
George Livingston
sumber
Mengomentari di sini karena ini terkait dengan Node.JS. Saya harus memulai ulang aplikasi di penyedia hosting saya
Reed
0

Saya memiliki masalah yang persis sama dan setelah beberapa menit bermain-main saya mengartikan bahwa saya ketinggalan untuk menambahkan ekstensi file ke header saya. jadi saya mengubah baris berikut:

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

untuk

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

Saya mulai mendapatkan masalah hari ini hanya pada chrome dan bukan safari untuk proyek / url yang sama untuk wadah goormide saya (node.js)

Setelah mencoba beberapa saran di atas yang tampaknya tidak berfungsi dan mundur pada beberapa perubahan kode yang saya buat dari kemarin hingga hari ini yang juga tidak membuat perbedaan, saya berakhir dengan mengklik pengaturan chrome:

1. Pengaturan;

2. turun ke bawah, pilih: "Advanced";

3. gulir ke bawah, pilih: "Kembalikan pengaturan ke default aslinya";

Itu tampaknya telah memperbaiki masalah karena saya tidak lagi mendapatkan peringatan / kesalahan di konsol dan halaman ditampilkan sebagaimana mestinya. Membaca tulisan di atas tampaknya masalah dapat terjadi dari sejumlah sumber sehingga pengaturan ulang adalah perbaikan generik yang potensial. Bersulang

Max Pietrzak
sumber
0

Jika Anda melayani aplikasi di prod pastikan Anda melayani file statis dengan pekerja layanan. Saya memiliki kesalahan ini ketika saya hanya melayani subfolder statis React build on Django (tanpa aset yang memiliki gaya)

Hvitis
sumber
0

Menggunakan Bereaksi

Saya menemukan kesalahan ini di aplikasi profil reaksi saya. Aplikasi saya berperilaku seperti sedang mencoba mereferensikan url yang tidak ada. Saya percaya ini ada hubungannya dengan bagaimana perilaku webpack.

Jika Anda menautkan file di folder publik, Anda harus ingat untuk menggunakan% PUBLIC_URL% sebelum sumber daya seperti ini:

<link type="text/css" rel="stylesheet" href="%PUBLIC_URL%/bootstrap.min.css" />
ArrowKneeous
sumber