2011-10-18 26 views
8

Hemos estado desarrollando una aplicación Ruby on Rails. Recientemente hemos vuelto a implementar esta aplicación detrás de un proxy Apache que usa HTTPS.IE afirma no reconocer el texto/javascript MIME tipo

Desde que hemos hecho de este uno de nuestros usuarios es enviado a la página siguiente cuando se trata de utilizar la aplicación: http://shell.windows.com/fileassoc/mimeassoc.asp?mime=text/javascript, que dice:

MIME Type: text/javascript 
Description: UnKnown 
Windows does not recognize this MIME type. 

¿Alguien sabe en qué circunstancias sería IE no reclamar ¿Sabes qué hacer con un archivo text/javascript? Es solo este usuario hasta ahora.

Windows 7/IE 8 y xpsp2/IE8

EDITAR Adición de la respuesta HTTP completa que IE barfs en

HTTP/1.1 200 OK 
Date: Mon, 24 Oct 2011 00:31:27 GMT 
Server: Apache/2.2.3 (CentOS) 
X-Powered-By: Phusion Passenger (mod_rails/mod_rack) 3.0.9 
ETag: "a6d7d64e3ca943eabc73db920baa7d76" 
Cache-Control: max-age=0, private, must-revalidate 
X-UA-Compatible: IE=Edge,chrome=1 
X-Runtime: 0.003257 
Status: 200 
Content-Type: text/javascript; charset=utf-8 
Connection: close 

window.location.href='https://xx.xx.org.au/AED/sessions/new' 
+0

es el usuario que accede a la URL a través de https ... ¿hay algún mensaje de aviso como "cargar algunos recursos no están asegurados" ... cargado a través de HTTP, que el usuario puede haber hecho clic en "no" ? – r0ast3d

+0

Solo por patadas, quite todos sus encabezados a excepción de 'Content-Type'. (Puede usar Fiddler para establecer un punto de interrupción al cargarlo y eliminarlo sin cambiar la configuración de su sitio o servidor). Asegurémonos de que uno de los otros encabezados no esté causando cosas para confundirse Si eso no funciona, intente eliminar la declaración del juego de caracteres. – Brad

+0

¿Qué barras de herramientas de IE tiene instaladas su usuario? –

Respuesta

0

IE deberían reconocer text/javascript (ver for example, 'text/javascript 'se menciona allí). Otros factores deben estar en juego. Usted puede tratar de:

(1) se puede especificar el tipo directamente en la etiqueta script

<script type="text/javascript" src="..."></script> 

(2) Es el javascript procedente del mismo sitio con el mismo protocolo? El usuario puede bloquear contenido que no está protegido cuando proviene de una dirección no segura e IE puede recibir un mensaje de error engañoso.

(3) Debido a que ahora está detrás de Apache, hay otros encabezados allí que puedan ser confusos IE?

(4) Apuesto a que comprobó que Rails establece la ubicación correcta para los recursos (es decir, utiliza el servidor proxy, apache, no los raíles).

1

Ok. Parece que lo hemos descubierto. Fue un error en nuestra aplicación que hizo que enviara JavaScript no válido al navegador. Parece rieles maneja las redirecciones de sesiones no autenticadas a la página de inicio de sesión mediante el envío de un pequeño fragmento de JS que se parece a esto:

window.location.href='https://blah.blah.org.au/APP/sessions/new' 

Tuvimos un error tipográfico en la ERB para este archivo que lo hizo enviar este lugar:

' %> 
window.location.href='https://blah.blah.org.au/APP/sessions/new' 

Lo interesante es que solo algunas versiones de IE se confunden con esto.

+0

Parece que hablé demasiado pronto: el Javascript está en este momento pero todavía estamos recibiendo el error en un par de máquinas XP/IE8. – AndrewR

0

¿los encabezados de respuesta http especifican X-Content-Type-Options: nosniff? si es así, ie9 no ejecutará ningún script hasta que lo haga

3

Debe intentar application/javascript.

+1

Según wikipedia, IE 6 a 8 no reconoce este http://en.wikipedia.org/wiki/Client-side_JavaScript – MarianP

+0

de acuerdo con su propia respuesta, no fue debido a que 'text/javascript' no fue reconocido. 'application/javascript' no es una respuesta adecuada ya que ESTE podría no ser reconocido por algunas versiones de IE en mi comentario anterior. – MarianP

+0

Bajé tu respuesta y luego cancelé el voto a favor más adelante, ya que no me gusta mucho que me critiquen por tratar de ayudar con preguntas confusas o complejas. no es la respuesta correcta de todos modos. – MarianP

0

Mi sospecha es que su contenido de JavaScript no es correcto o simplemente no es "IE" correcto. :-)

En primer lugar, si usted dice que es UTF-8, ¿está seguro de que esto es lo que está sirviendo? De acuerdo con el consejo de Brad, suelte la definición del juego de caracteres y vea si el comportamiento cambia.

También obtenga una copia de la javascript que se devuelve e intente validarla en alguna parte. He visto a otros informar problemas en los que el javascript estaba dañado de ciertas formas específicas que causaban que solo ciertas versiones de IE se rompieran.¿Concatenan archivos js múltiples o algo así? Otro ejemplo es una etiqueta accidental%> en su archivo Javascript que confundirá algunos navegadores.

Al tomar el lado del cliente del valor devuelto utilizando firebug o herramientas de desarrollador chrome, puede estar seguro de que el proxy no está atornillando los encabezados o la codificación (incluido gzip).

También he oído que ciertas versiones anteriores de IE no manejan correctamente los tipos mimet en iframes. ¿Estás usando un iframe en absoluto?

Por último, algunos antivirus/software de seguridad modificarán la solicitud saliente. Aceptar encabezados (¿no es muy bonito?) Engañando al servidor haciéndole creer que el navegador no es compatible con gzip o algo así. ¿Puedes tomar una copia de la solicitud saliente para el javascript? Desea verificar los encabezados de solicitud modificados.

+0

Sí. Sospecho que IE está analizando el script devuelto para intentar determinar si realmente es JS o no, pero todavía no sé exactamente qué es lo que no le gusta. – AndrewR

0

Puede soltar el atributo type de la etiqueta script. HTML5 no lo requiere, y todos los navegadores entienden que es "su sabor local de JavaScript", que es lo que desea. Su página no validará contra el doctype HTML4, pero mientras sepa por qué no valida, creo que está bien. Más importante para trabajar que validar.

+0

Este no es un documento HTML. No tiene ningún tipo de contenido 'text/html' ni una etiqueta' doctype'. – eaj

Cuestiones relacionadas