Chrome dice "Recurso interpretado como script pero transferido con texto tipo MIME/sin formato", ¿qué pasa?

Resuelto Shaoz asked hace 14 años • 20 respuestas

En FF y todo, mi javascript funciona bien. Pero en Chrome aparece este mensaje:

Recurso interpretado como script pero transferido con texto tipo MIME/sin formato.

Revisé todas las etiquetas del script y todas tienen el archivo MIME type="text/javascript". Incluso lo dice con jquery y jquery ui. ¿Qué le pasa a Chrome?

¿Cuál es el problema y la solución para esto? ¿Es algo que tengo que cambiar en las 'opciones' del navegador o es desde el servidor, o tengo que modificar mi código?

Shaoz avatar Aug 12 '10 19:08 Shaoz
Aceptado

Significa que el servidor está enviando una respuesta HTTP de Javascript con

Content-Type: text/plain

Debe configurar el servidor para enviar una respuesta JavaScript con

Content-Type: application/javascript
SLaks avatar Aug 12 '2010 12:08 SLaks

Esto no tiene nada que ver con jQuery ni con ninguna peculiaridad del código de script del lado del cliente. Es un problema del lado del servidor : el servidor (aplicación del lado) no envía el valor Content-Typedel campo de encabezado HTTP esperado para el recurso de secuencia de comandos del lado del cliente. Esto sucede si el servidor web no está suficientemente configurado, mal configurado o si una aplicación del lado del servidor (por ejemplo, PHP) está generando el recurso de script del lado del cliente.

Los tipos de medios MIME adecuados para implementaciones de ECMAScript como JavaScript incluyen:

  • text/javascript(registrado como obsoleto , no obsoleto; pero aún válido y con el mejor soporte )
  • text/ecmascript(registrado como obsoleto , no obsoleto; pero sigue siendo válido )
  • application/javascript
  • application/ecmascript

No incluyen , ya que los tipos de medios application/x-javascriptMIME enumerados anteriormente son los que ya están registrados en el árbol de estándares (por lo que ya no hay necesidad, ni debería quererse, usar medios experimentales). Cfr. RFC 4329, "Tipos de medios de secuencias de comandos" (2005 CE) y mi caso de prueba: compatibilidad con tipos de medios de secuencias de comandos .

Una solución es configurar el servidor si es posible, como ya se recomendó. Para Apache, esto puede ser tan simple como agregar la directiva

AddType text/javascript .js

(consulte la documentación del servidor Apache HTTP para obtener más detalles).

Pero si el recurso de secuencia de comandos del lado del cliente es generado por una aplicación del lado del servidor, como PHP, entonces es necesario establecer el Content-Typevalor del campo de encabezado explícitamente, ya que el valor predeterminado probablemente sea text/html:

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

(Esa y declaraciones similares deben aparecer antes de cualquier otra salida; consulte el manual de PHP ; de lo contrario, se considera que el cuerpo del mensaje HTTP ya ha comenzado y es demasiado tarde para enviar más campos de encabezado).

La generación del lado del servidor puede ocurrir fácilmente con un recurso de script del lado del cliente incluso si tiene archivos .js simples en el servidor, si se eliminan los comentarios de ellos a medida que se publican, si están todos empaquetados en una respuesta grande (para reducir el número de solicitudes, que puede ser más eficiente), o son minimizados por la aplicación del lado del servidor de cualquier otra manera.

PointedEars avatar Aug 29 '2011 07:08 PointedEars