Chrome se niega a ejecutar un script AJAX debido a un tipo MIME incorrecto


Estoy tratando de acceder a un script como JSON a través de AJAX, que funciona bien en Safari y otros navegadores, pero por desgracia no se ejecutará en Chrome. Viene con el siguiente error:

Se negó a ejecutar el script desde '*' porque su tipo MIME ('application/json') no es ejecutable, y la comprobación estricta del tipo MIME está habilitada.

Aquí está la petición:

$.ajax({
    url: "http://some_url/test.json?callback=?",
    type: "GET",
    dataType: 'json',
    cache: true,
    success: function (data, status, error) {
      console.log('success', data);
    },
    error: function (data, status, error) {
      console.log('error', data, status, error);
    }
});

¿alguien tiene una solución para esto?

Author: Smi, 2014-07-02

7 answers

Al agregar un argumento de devolución de llamada, le indica a jQuery que desea realizar una solicitud para JSONP utilizando un elemento script en lugar de una solicitud para JSON utilizando XMLHttpRequest.

JSONP no es JSON. Es un programa JavaScript.

Cambie su servidor para que genere el tipo MIME correcto para JSONP que es application/javascript.

(Mientras estás en ello, deja de decirle a jQuery que estás esperando JSON ya que eso es contradictorio: dataType: 'jsonp').

 67
Author: Quentin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-07-02 10:17:48

Si su servidor proxy o contenedor agrega el siguiente encabezado al servir el .js, obligará a algunos navegadores como Chrome a realizar una comprobación estricta de los tipos MIME:

X-Content-Type-Options: nosniff

Elimine este encabezado para evitar que Chrome realice la comprobación MIME.

 52
Author: Tom Chamberlain,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-12-03 09:19:15

PARA tu información, tengo el mismo error de Chrome Console. Pensé que mi función AJAX lo estaba causando, pero no comenté mi script minificado de /javascripts/ajax-vanilla.min.js a /javascripts/ajax-vanilla.js. Pero en realidad el archivo fuente estaba en /javascripts/src/ajax-vanilla.js. Así que en Chrome se obtiene un error de tipo MIME malo, incluso si el archivo no se puede encontrar. En este caso, el mensaje de error se describe como text/plain tipo MIME incorrecto.

 9
Author: Lanti,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-17 11:54:07

Para el registro y los usuarios de búsqueda de Google, Si usted es un desarrollador de. NET Core, debe establecer los tipos de contenido manualmente, porque su valor predeterminado es null o vacío:

var provider = new FileExtensionContentTypeProvider();
app.UseStaticFiles(new StaticFileOptions
{
    ContentTypeProvider = provider
});
 2
Author: VahidN,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-13 08:19:32

Encontré este error usando IIS 7.0 con una página de error 404 personalizada, aunque sospecho que esto sucederá con cualquier página 404. El servidor devolvió una respuesta html 404 con un tipo mime text/html que no pudo (correctamente) ser ejecutado.

 1
Author: James Westgate,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-05-24 09:31:22

Si la aplicación está alojada en IIS, asegúrese de que el contenido estático esté instalado. Panel de Control > Programas > Activar o desactivar las características de Windows > Servicios de Información de Internet > Servicios de World Wide Web > Características HTTP comunes > Contenido estático.

Me enfrenté a este problema al intentar ejecutar una aplicación existente en una nueva instalación de IIS 10.0

 1
Author: user890255,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-08-13 21:11:10

En mi caso, utilizo

$.getJSON(url, function(json) { ... });

Para hacer la solicitud (a la API de Flickr), y tengo el mismo error MIME. Al igual que la respuesta sugerida anteriormente, agregar el siguiente código:

$.ajaxSetup({ dataType: "jsonp" });

Solucionado el problema y ya no veo el error de tipo MIME en la consola de Chrome.

 0
Author: Daniel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-03-20 22:45:30