Ho avuto lo stesso problema da mesi con Firefox su Linux (ad esempio tra riavvii e svuotamento della cache, ma solo su una delle due macchine installate in modo simile). Il sito sembrava HTML nudo (senza alcuno stile applicato) e cose come i pulsanti di voto non funzionavano.
Risposta breve: Nel mio caso il problema era che il parametro Firefox
network.http.accept-encoding
(in about:config
) era impostato su una stringa vuota. Ripristino al suo valore predefinito
gzip, deflate
fa di nuovo funzionare StackOverflow.
Risposta più lunga:
Ho visto il problema anche con -safe-mode (cioè con tutte le estensioni disabilitate). Guardando la console degli errori, Firefox si lamenta di un "carattere illegale" nei dati di http://cdn.sstatic.net/js/stub.js?v=f3ba9bf843c1 . Questo sembra essere un file javascript gzip (scaricato manualmente e eseguito file
su di esso) e per qualche motivo Firefox sembra interpretarlo senza decomprimerlo. Quindi ci sono errori javascript consecutivi su simboli sconosciuti (che sono definiti in questo file javascript gzipped).
Guardando il traffico HTTP, si vede (con la mia impostazione originale e problematica):
Richiesta:
GET /js/stub.js?v=f3ba9bf843c1 HTTP/1.1
Host: cdn.sstatic.net
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:5.0) Gecko/20100101 Firefox/5.0
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Connection: keep-alive
Referer: http://stackoverflow.com/
Nota che non esiste un campo Accept-Encoding
che indica che Firefox è pronto per accettare i dati compressi con gzip.
Risposta HTTP a questo:
HTTP/1.1 200 OK
Server: nginx/0.8.36
Date: Sat, 25 Jun 2011 16:53:21 GMT
Content-Type: application/x-javascript
Connection: keep-alive
Cache-Control: max-age=604800
Content-Encoding: gzip
Last-Modified: Fri, 24 Jun 2011 13:33:57 GMT
ETag: "64cd5e5e7332cc1:0"
Vary: Accept-Encoding
Content-Length: 6464
X-Cache: HIT
Accept-Ranges: bytes
così il server nginx risponde con un Content-Encoding
campo impostato su gzip
, ignorando le capacità dei client. Non ne sono sicuro, ma questo mi sembra una violazione sul lato server.
Dopo aver impostato il parametro Firefox network.http.accept-encoding
sul suo valore di impostazione di fabbrica, la comunicazione http per il file javascript sopra appare come segue:
Richiesta:
GET /js/stub.js?v=f3ba9bf843c1 HTTP/1.1
Host: cdn.sstatic.net
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:5.0) Gecko/20100101 Firefox/5.0
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Connection: keep-alive
Referer: http://stackoverflow.com/
Ora Firefox dice al server che accetta i dati compressi con gzip.
Risposta:
HTTP/1.1 200 OK
Server: nginx/0.8.36
Date: Sat, 25 Jun 2011 17:02:08 GMT
Content-Type: application/x-javascript
Connection: keep-alive
Cache-Control: max-age=604800
Content-Encoding: gzip
Last-Modified: Fri, 24 Jun 2011 13:33:57 GMT
ETag: "64cd5e5e7332cc1:0"
Vary: Accept-Encoding
Content-Length: 6464
X-Cache: HIT
Accept-Ranges: bytes