Rails e um bug chamado IE6
Esse mês estamos lançando o Zest. Com tudo terminado (na verdade, nem tudo, pois várias funcionalidades ainda estão na fila para serem adicionadas), começou a sobrar um tempinho para voltar a escrever no Blog.
Um bug estranho que tivemos no desenvolvimento do Zest (usando Rails 2.1.0) se deve ao nosso querido Internet Explorer 6. Na verdade, o mesmo comportamento incorreto acontece no IE7. Se trata do cabeçalho que é enviado nas solicitações do IE6.
O IE6 ao fazer uma solicitação não coloca no cabeçalho qual o tipo de solicitação (como text/html ou application/xhtml+xml). Ao invés disso ele coloca uma informação genérica como a abaixo:
image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
Ou seja, o IE6 não informa corretamente como devemos responder para o solicitante. Na nossa aplicação, caso a chamada fosse do tipo html, redirecionávamos para a página inicial de vendas. Se, porém, a chamada fosse de qualquer outro tipo, redirecionávamos para 404 (página não encontrada). Isso fazia com que o usuário do IE 6 e 7 fosse redirecionado para a página 404.
A solução para esse problema encontramos nesse link que está em inglês. Com base nessa solução, fizemos (na verdade, o Rodrigo fez) um initializer para a nossa aplicação. Para usar, salve o arquivo na pasta config/initializers da sua aplicação. Para nos resolveu o problema, mas faça os testes necessários na sua aplicação, porque não queremos ser responsáveis por nenhum problema que esse workaround possa acarretar na sua aplicação.
Bug de header do IE: workaround na pasta initializer
Update:
Para a versão 2.3.2 ou superior do Rails, mude “ActionController::AbstractRequest” para “ActionController::Request”.
Leia também sobre o assunto em:
- http://intertwingly.net/blog/2007/08/23/Intermittent-IE-failures


