No FF e tudo, meu javascript funciona bem. Mas no Chrome, essa mensagem é exibida:
Recurso interpretado como script, mas transferido com o tipo MIME text / plain.
Eu verifiquei todas as tags de script e todas elas têm o MIME type="text/javascript"
. Até o diz com jquery e jquery ui. O que há de errado com o Chrome?
Qual é o problema e a correção para isso? É algo que tenho que mudar nas 'opções' do navegador ou do servidor, ou preciso ajustar meu código?
google-chrome
mime-types
Shaoz
fonte
fonte
Respostas:
Isso significa que o servidor está enviando uma resposta Javascript HTTP com
Você precisa configurar o servidor para enviar uma resposta JavaScript com
fonte
content-type:application/javascript
, porém,application/x-javascript
é não um RFC padrão ou ECMAScript.Isso não tem nada a ver com jQuery ou qualquer peculiaridade do código de script do lado do cliente. É um problema do lado do servidor : O servidor (aplicativo do lado) não está enviando o campo de cabeçalho HTTP esperado
Content-Type
para o recurso de script do lado do cliente. Isso acontece se o servidor da Web estiver insuficientemente configurado, configurado incorretamente ou se um aplicativo do lado do servidor (por exemplo, PHP) estiver gerando o recurso de script do lado do cliente.Os tipos de mídia MIME adequados para implementações do ECMAScript como JavaScript incluem:
text/javascript
(registrado como obsoleto , não obsoleto; mas ainda válido e com melhor suporte )text/ecmascript
(registrado como obsoleto , não obsoleto; mas ainda válido )application/javascript
application/ecmascript
Eles não incluem
application/x-javascript
, pois os tipos de mídia MIME listados acima são os registrados na árvore de padrões até agora (portanto, não há necessidade e não deve haver necessidade de usar mais os experimentais). Cf. RFC 4329, "Tipos de Mídia de Script" (2005 CE) e meu Caso de Teste: Suporte para Tipos de Mídia de Script .Uma solução é configurar o servidor, se possível, como já recomendado. Para o Apache, isso pode ser tão simples quanto adicionar a diretiva
(consulte a documentação do servidor HTTP Apache para obter detalhes).
Mas se o recurso de script do lado do cliente for gerado por um aplicativo do servidor, como o PHP, será necessário definir o
Content-Type
valor do campo de cabeçalho explicitamente, pois o padrão é prováveltext/html
:(Essas declarações e outras semelhantes devem ocorrer antes de qualquer outra saída - consulte o manual do PHP -, caso contrário, o corpo da mensagem HTTP já foi iniciado e é tarde demais para enviar mais campos de cabeçalho.)
A geração do lado do servidor pode ocorrer facilmente com um recurso de script do lado do cliente, mesmo se você tiver arquivos .js simples no servidor, se os comentários forem removidos enquanto são exibidos, se todos estiverem agrupados em uma única resposta grande (para reduzir a número de solicitações, que podem ser mais eficientes) ou são minimizados pelo aplicativo do servidor de qualquer outra maneira.
fonte
text/javascript
maisapplication/javascript
. Se você tem motivos para acreditar que essaapplication/javascript
é a melhor resposta agora, o mínimo que você deve fazer é se explicar em um comentário. É inadequado que exija o mecanismo de notificação do Stack Overflow para que eu fique ciente de suas alterações. Reverti suas alterações, que chamo de falsificação , para as respostas a esta pergunta, onde as considero inapropriadas.Para servidores de aplicativos Java, como o Weblogic
1) Verifique se o seu arquivo weblogic.xml está livre de erros
como este:
2) Adicione um tipo MIME para javascript ao seu arquivo web.xml :
Isso também funcionará para outros contêineres Java - o Tomcat etc.
application/javascript
é atualmente o único tipo mime válido; outros comotext/javascript
foram preteridos.3) Pode ser necessário limpar o cache do navegador ou pressionar CTRL-F5
fonte
Eu tive esse problema e descobri como corrigi-lo.
Isso acontece quando o arquivo de estilo (CSS) está em uma codificação diferente do arquivo PHP que faz referência ao arquivo .css
Por exemplo, o uso do jQuery.js na codificação Unix e do index.php no UTF-8 causará esse problema; portanto, é necessário torná-los UTF-8 ou qualquer outra codificação, desde que iguais.
fonte
Se você estiver gerando seu javascript com um arquivo php, adicione-o como o início do seu arquivo:
fonte
No httpd.conf do seu apache, basta adicionar uma linha:
fonte
Recebi esta mensagem de depuração por um motivo mais absurdo do que as outras respostas aqui: Esta é a mensagem de erro recebida quando você não dorme o suficiente e faz referência a um arquivo js usando a sintaxe de um arquivo css. Como em,
ao invés de
Pensei em colocar isso aqui porque esta é a primeira postagem que aparece ao procurar a mensagem de erro.
fonte
Problema estranho, mas isso me ajudou a resolver meu problema. Às vezes, até as coisas mais fáceis são difíceis de entender ...
Em vez de usar
/js/main.css
na minha tag de script, useijs/main.css
SIM , realmente fez a diferença. Estou sentado no WAMP / Windows e não tinha um vhost, mas apenas usei
localhost/<project>
Se eu me referir,
/js/main.css
então eu me refirolocalhost/css/main.css
e não alocalhost/<project>/css/main.css
Quando você pensa sobre isso, é bastante óbvio, mas se alguém se deparar com isso, pensei em compartilhar essa resposta.
fonte
Verifique se os arquivos js realmente existem no servidor. Eu tive esse problema e descobri que os arquivos js não haviam sido carregados no servidor e, em vez disso, o servidor estava retornando a página html - que era o documento padrão configurado no servidor (por exemplo, default.html)
fonte
Se você está trabalhando no Joomla! e recebendo esse erro irritante ao tentar incluir um
.js
arquivo JavaScript ( ), a solução a seguir é para você.O problema mais provável é que você está tentando incluir um
.js
arquivo que não existe , ou que apenas extraviou.js
e quando o Joomla! não encontrar um recurso, em vez da mensagem 404 genérica, ele retornará uma mensagem 404 completa com uma página da Web e html completos etc.O navegador está interpretando como se fosse
.js
apenas uma página da web dizendo que o arquivo necessário não foi encontrado .Isso pode funcionar para joomla2.5joomla3.0joomla3.1joomla3.2joomla3.3joomla
fonte
Para mim, isso só aconteceu em algumas páginas porque eu usei em
window.location
vez de$location.url(...);
Isso corrigiu o meu problema. Demorou um pouco para descobrir :)fonte
Eu tive esse problema ao usar uma estrutura da Web e a corrigi movendo os arquivos javascript relevantes para a pasta javascript designada (pela estrutura).
fonte
Uma coisa comum quando isso acontece é se você simplesmente esqueceu de incluir as
type
chamadas de script. Você precisará defini-lo explicitamente, pois é - de acordo com o W3 - necessário :Ainda assim, parece que os navegadores têm um valor padrão de
plain/text
.Exemplo:
Você também pode definir um padrão para essa extensão de arquivo na configuração do Apache:
fonte
Se o IIS tiver certeza de que
common HTTP Features
você estáStatic Content
ativadofonte
Eu tive o mesmo erro e finalmente (no meu caso particular) encontrei um problema no descritor de implantação (web.xml)
O problema:
a solução:
fonte
Se você estiver usando o Spring MVC, poderá adicionar a seguinte tag mvn para excluir o arquivo de recursos do Spring Dispatch Servlet
fonte
No meu caso, o servidor estava enviando o correto,
Content-Type
mas com um incorretoContent-Encoding
. Certifique-se de definir apenasContent-Encoding: gzip
recursos com gzip. Além disso, depois de corrigir os cabeçalhos no servidor (no meu caso, o Google Cloud Storage), tive que esperar alguns minutos para refletir adequadamente as alterações devido ao cache.fonte
Se você estiver usando o AdonisJS (API REST, por exemplo), uma maneira de evitar isso é definir o cabeçalho da resposta da seguinte maneira:
fonte
Eu estava tendo o mesmo problema ao tentar alterar as imagens de fundo em uma matriz por javascript (jQuery neste caso).
De qualquer forma.
Em vez disso:
faça isso:
O javascript do Chrome é ferrado ao tentar analisar uma variável dentro de um elemento estruturado com '. No meu caso, parou imediatamente antes da inserção da matriz de imagens. Em vez de analisar o URL da imagem + o nome da imagem (dentro da matriz), estava analisando apenas o URL da imagem.
Você provavelmente precisará pesquisar dentro do código e ver onde isso acontece. FF, IE e todos os outros não têm esse problema.
fonte
eval
se você puder ajudá-lo: javascripttoolbox.com/bestpractices/#evalA resposta postada aqui por simon-sarris me ajudou.
Não se esqueça de reiniciar o sistema após as alterações.
fonte