it-swarm-eu.dev

Chrome říká, že zdroj je interpretován jako skript, ale převeden s textem typu MIME/plain.

Ve FF a všechny, můj javascript funguje dobře. V prohlížeči Chrome se však zobrazuje tato zpráva: 

Zdroj je interpretován jako skript, ale je přenášen textem MIME typu/plain.

Zkontroloval jsem všechny tagy skriptu a všechny mají MIME type="text/javascript". To dokonce říká, že s jquery a jquery ui. Co je s prohlížečem Chrome v pořádku?

Jaký je problém a oprava? Je to něco, co musím změnit v 'možnosti' prohlížeče nebo je to ze serveru, nebo musím Tweak můj kód?

312
Shaoz

To znamená, že server odesílá odpověď HTTP Javascript pomocí

Content-Type: text/plain

Musíte nakonfigurovat server tak, aby odeslal odpověď JavaScriptu

Content-Type: application/javascript
203
SLaks

Toto má nic co do činění s jQuery nebo jakýkoliv druh skriptu na straně klienta. Je to problém server-side: Server (-side aplikace) neodesílá očekávanou hodnotu HTTP Content-Type pole záhlaví pro prostředek skriptu na straně klienta. K tomu dochází, pokud je webový server nedostatečně nakonfigurován, nesprávně nakonfigurován nebo aplikace na straně serveru (např. PHP) generuje prostředek skriptu na straně klienta.

Správné typy médií MIME pro implementace ECMAScript, jako je JavaScript, zahrnují:

  • text/javascript (registrováno jako obsolete, není zastaralé, ale stále platné a podporováno nejlepší)
  • text/ecmascript (registrováno jako obsolete, není zastaralé, ale stále platné)
  • application/javascript
  • application/ecmascript

Zahrnují ne zahrnout application/x-javascript, protože výše uvedené typy médií MIME jsou ty, které jsou nyní registrovány ve stromu standardů (takže není třeba, a už by nemělo být žádoucí používat experimentální). Cf. RFC 4329, "Scripting Media Types" (2005 CE) a my Test Case: Podpora pro typy skriptovacích médií .

Jedním z řešení je konfigurace serveru, pokud je to možné, jak již bylo doporučeno. Pro Apache to může být stejně jednoduché jako přidání směrnice

AddType text/javascript .js

(Podrobnosti naleznete v dokumentaci Apache HTTP Server ).

Pokud je však zdroj skriptu na straně klienta generován aplikací na straně serveru, jako je PHP, je nutné nastavit hodnotu pole Content-Type explicitně, protože výchozí hodnota je pravděpodobně text/html:

<?php
  header('Content-Type: text/javascript; charset=UTF-8');
  // ...
?>

(To a podobné příkazy musí přijít před jakýkoliv jiný výstup - viz PHP manuál -, jinak je tělo zprávy HTTP považováno za začaté již a je příliš pozdě posílat další pole záhlaví. )

Generování na straně serveru se může snadno stát zdrojem skriptů na straně klienta, i když máte na serveru prosté soubory .js, pokud jsou komentáře z nich odebrány, jakmile jsou doručovány, pokud jsou všechny zabaleny do jedné velké odezvy počet požadavků, které mohou být efektivnější), nebo jsou minimalizovány aplikací na straně serveru jakýmkoli jiným způsobem.

125
PointedEars

Pro Java aplikační servery, jako je Weblogic

1) Ujistěte se, že soubor weblogic.xml neobsahuje žádné chyby

jako je tato:

    <?xml version = '1.0' encoding = 'windows-1252'?>
<weblogic-web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                  xsi:schemaLocation="http://www.bea.com/ns/weblogic/weblogic-web-app http://www.bea.com/ns/weblogic/weblogic-web-app/1.0/weblogic-web-app.xsd"
                  xmlns="http://www.bea.com/ns/weblogic/weblogic-web-app">
    <container-descriptor>
        <prefer-web-inf-classes>true</prefer-web-inf-classes>
    </container-descriptor>
    <context-root>MyWebApp</context-root>
</weblogic-web-app>

2) Přidejte do svého web.xml souboru mime typ pro javascript:

    ...
        </servlet-mapping>

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

        <welcome-file-list>
    ...

To bude fungovat i pro jiné kontejnery Java - Tomcat atd. application/javascript je v současné době jediným platným typem mime; ostatní, jako text/javascript, byly zamítnuty.

3) Možná budete muset vymazat mezipaměť prohlížeče nebo stisknout klávesy CTRL-F5

19
egallardo

Pokud vytváříte svůj JavaScript s php souborem, přidejte to jako začátek vašeho souboru:

<?php Header("Content-Type: application/x-javascript; charset=UTF-8"); ?>
8
mopsyd

Měl jsem tento problém a přišel jsem na to, jak to opravit.

Stává se, když je soubor stylu (CSS) v jiném kódování ze souboru PHP, který odkazuje na soubor css 

Například, použití jQuery.js v Unix kódování a použití index.php v UTF-8 způsobí tento problém tak vy musíte dělat je oba UTF-8 nebo nějaké jiné kódování jak dlouho jak to stejný. 

7
mak

V httpd.conf ve vašem Apache stačí přidat takový řádek:

AddType application/x-javascript .js
3
Ruslan Abuzant

Tuto zprávu o ladění jsem obdržel ze silnějšího důvodu než ostatní odpovědi zde: Toto je chybová zpráva přijatá, když nedostáváte dostatek spánku a odkazujete na soubor JS pomocí syntaxe pro soubor css. Jako v,

<link rel='stylesheet' type='text/css' href='clearly_javascript.js'/>

spíše než 

<script src='clearly_javascript.js'></script>

Myslel jsem, že bych to dal sem, protože to je první příspěvek, který přichází při hledání chybové zprávy. 

2
Robert Townley

Zvláštní problém, ale to mi pomohlo vyřešit můj problém. Někdy i ty nejjednodušší věci je těžké zjistit ...

Namísto použití /js/main.css v mém skriptu jsem použil js/main.css 

ANO, to vlastně dělalo rozdíl. Sedím na WAMP/Windows a neměla jsem vhost, ale právě jsem použila localhost/<project>

Pokud odkazuji na /js/main.css, pak odkazuji na localhost/css/main.css a ne na localhost/<project>/css/main.css

Když se nad tím zamyslíte, je to zcela zřejmé, ale když někdo na to narazí, myslel jsem, že bych tuto odpověď sdílel.

Zkontrolujte, zda soubory JS skutečně existují na serveru. Měl jsem tento problém a objevil jsem, že soubory js nebyly nahrány na server a server místo toho skutečně vrátil html stránku - což byl výchozí dokument nakonfigurovaný na serveru (např. Default.html)

1
Steve Mc

Pro mě se to stalo pouze na některých stránkách, protože místo $location.url(...); jsem použil window.location Toto opravilo můj problém. Chvíli trvalo, než jsem zjistil :)

1
tfa

Pokud pracujete na Joomla! a získání této nepříjemné chyby, když se snaží zahrnout (.js) soubor JavaScript, pak následující řešení je pro vás.

Nejpravděpodobnějším problémem je, že se snažíte zahrnout soubor .js, který zde není, nebo jste právě tento soubor .js, a kdy Joomla! nenajde zdroj, pak místo generické zprávy 404 vrátí plnohodnotnou zprávu 404 s kompletní webovou stránkou a html atd.

Webový prohlížeč jej interpretuje jako .js, zatímco jeho webová stránka, která říká, že požadovaný soubor nebyl nalezen.

To může fungovat pro joomla2.5joomla3.0joomla3.1joomla3.2joomla3.3joomla

1
Mohd Abdul Mujib

Pokud používáte AdonisJS (například REST API), jedním ze způsobů, jak tomu zabránit, je definovat hlavičku odpovědi takto:

response.safeHeader('Content-type', 'application/json')
0
Billal Begueradj

Měla jsem stejnou chybu a nakonec (v mém případě) jsem zjistila problém v deskriptoru nasazení (web.xml)

Problém:

<servlet-mapping>
    <servlet-name>SessionController</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>
...
<welcome-file-list>
    <welcome-file>/</welcome-file>
</welcome-file-list>

řešení:

<servlet-mapping>
    <servlet-name>SessionController</servlet-name>
    <url-pattern>/SessionController</url-pattern>
</servlet-mapping>
...
<welcome-file-list>
    <welcome-file>desktop.jsp</welcome-file>
</welcome-file-list>
0
Daniel Kennedy

Pokud se jeho IIS ujistí, že máte common HTTP Features zapnutou Static Content

0
varun

Měl jsem tento problém při používání webového rámce a opravil jsem to přesunutím příslušných souborů javascript do určené (rámcové) složky javascriptu.

0
JJ.

Pokud používáte Spring MVC, Můžete přidat následující značku mvn, abyste vyloučili soubor zdrojů z Servletu Spring Dispatch Servlet

<mvc:resources mapping="/js/*.js" location="/js/"/>
<mvc:resources mapping="/css/*.css" location="/css/"/>
<mvc:resources mapping="/images/*.*" location="/images/"/>
0
sendon1982

V mém případě server odeslal správné Content-Type, ale s nesprávným Content-Encoding. Ujistěte se, že Content-Encoding: gzip nastavujete pouze pro zdroje gzipped. Také, poté, co jsem opravil záhlaví na serveru (v mém případě, Google Cloud Storage), musel jsem počkat několik minut, abych řádně odrážel změny v důsledku ukládání do mezipaměti.

0
falsarella