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

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *