2011-10-18 5 views
8

Abbiamo sviluppato un'applicazione Ruby on Rails. Recentemente abbiamo ridistribuito questa applicazione dietro un proxy Apache che utilizza HTTPS.IE sta rivendicando di non riconoscere il testo/javascript tipo MIME

Dal momento che abbiamo fatto questo uno dei nostri utenti viene inviato alla pagina seguente quando si cerca di utilizzare l'applicazione: http://shell.windows.com/fileassoc/mimeassoc.asp?mime=text/javascript, che dice:

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

Qualcuno sa in quali circostanze sarebbe IE non rivendicare sapere cosa fare con un file text/javascript? È solo questo utente finora.

Windows 7/IE 8 e XPsp2/IE8

EDIT Aggiunta la risposta completa HTTP che IE barfs su

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

è l'utente che accede al url https via ... ci sono messaggi di avviso come ad esempio "caricare alcune risorse non sono garantiti" ... caricati su HTTP, che l'utente può aver cliccato "no" ? – r0ast3d

+0

Solo per i calci, rimuovi tutti i tuoi header tranne "Content-Type". (Puoi usare Fiddler per impostare un punto di interruzione al caricamento e rimuoverli senza modificare la configurazione del tuo sito o del server.) Assicurati che una delle altre intestazioni non stia causando cose da confondersi. Se ciò non funziona, prova a rimuovere la dichiarazione del set di caratteri. – Brad

+0

Quali barre degli strumenti di IE sono state installate dall'utente? –

risposta

0

IE dovrebbero riconoscere text/javascript (vedi for example, 'text/javascript 'è menzionato lì). Altri fattori devono essere in gioco. Si può provare:

(1) è possibile specificare il tipo direttamente nel tag script

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

(2) è il javascript provenienti dallo stesso sito con lo stesso protocollo? L'utente può bloccare il contenuto che non è protetto quando proviene da un indirizzo non protetto e IE potrebbe semplicemente darti un messaggio di errore fuorviante.

(3) Perché ora sei dietro Apache, ci sono altre intestazioni che potrebbero confondere IE?

(4) Scommetto che hai controllato che Rails imposta la posizione giusta per le risorse (ad esempio utilizza l'host proxy, apache, non i binari).

1

Ok. Sembra che l'abbiamo capito. Si è verificato un errore nella nostra applicazione che ha causato l'invio di alcuni JavaScript non validi al browser. Sembra Rails gestisce redirect di sessioni non autenticate alla pagina di login con l'invio di un piccolo frammento di JS che assomiglia a questo:

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

Abbiamo avuto un errore di battitura nel ERB per il file che lo ha reso inviare questo, invece:

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

Ciò che è interessante è che solo alcune versioni di IE vengono confuse da questo.

+0

Sembra che abbia parlato troppo presto - il Javascript è in questo momento ma stiamo ancora ricevendo l'errore su un paio di macchine XP/IE8. – AndrewR

0

le intestazioni delle risposte http specificano X-Content-Type-Options: nosniff? in tal caso, ie9 non eseguirà alcun script finché non lo fai

3

Dovresti provare application/javascript.

+1

in base a wikipedia, da IE 6 a 8 non riconosco questo http://en.wikipedia.org/wiki/Client-side_JavaScript – MarianP

+0

in base alla sua risposta, non era dovuto che "text/javascript" non fosse riconosciuto. 'application/javascript' non è una risposta corretta in quanto QUESTO potrebbe non essere riconosciuto da alcune versioni di IE re mio commento precedente. – MarianP

+0

Ho downvoted la tua risposta e poi cancellato il downvote in seguito, poiché non mi piace molto essere downvoted per cercare di aiutare con domande confuse o complesse. non è la risposta giusta comunque. – MarianP

0

Il mio sospetto è che il tuo contenuto di javascript non sia corretto, o semplicemente non "IE" corretto. :-)

Prima di tutto, se stai dicendo il suo UTF-8 sei sicuro che questo è ciò che stai servendo? In linea con i consigli di Brad, elimina la definizione del set di caratteri e verifica se il comportamento cambia.

Anche prendere una copia del javascript che viene restituito e provare a convalidarlo da qualche parte. Ho visto altri segnalare problemi in cui il javascript è stato danneggiato in alcuni modi specifici che hanno causato la rottura solo di alcune versioni di IE.Stai concatenando più file js o qualcosa del genere? Un altro esempio è un tag%> accidentale nel file javascript che confonderà alcuni browser.

Afferrando il lato client del valore restituito utilizzando gli strumenti per sviluppatori firebug o chrome, si può essere sicuri che il proxy non stia rovinando le intestazioni o la codifica (incluso gzip).

Ho anche sentito dire che alcune versioni precedenti di IE non gestiscono correttamente i mimetipi negli iframe. Stai usando un iframe?

Ultimo ma non meno importante, alcuni software antivirus/di sicurezza modificheranno la richiesta in uscita Accetta intestazioni (non è molto bello?) Inducendo il server a pensare che il browser non supporti gzip o qualcosa del genere. Puoi prendere una copia della richiesta in uscita per il javascript? Si desidera verificare le intestazioni delle richieste modificate.

+0

Sì. Sospetto che IE stia facendo un po 'di analisi sullo script restituito per provare a determinare se si tratta davvero di JS o meno, ma non so ancora esattamente cosa non gli piace ancora. – AndrewR

0

È possibile rilasciare l'attributo type del tag script. HTML5 non lo richiede e tutti i browser lo capiscono come "il loro sapore locale di JavaScript", che è ciò che desideri. La tua pagina non verrà convalidata con il doctype HTML4, ma finché sai perché non convalida, penso che sia ok. È più importante lavorare che convalidare.

+0

Questo non è un documento HTML. Non ha né il tipo di contenuto 'text/html' né un tag' doctype'. – eaj

Problemi correlati