Tempo perdido no navegador

Todo o desenvolvedor de software web tem um grande problema e ele se chama browser, ou navegador, ou programa_que_eu_navego. Atualmente o mais utilizado (e melhor) é o Google Chrome, mas temos que nos preocupar com Internet Explorer 9, Internet Explorer 10, Firefox, Opera, Safari e algum novo que é utilizado por menos de 1% das pessoas.

Existem alguns padrões que regulam o desenvolvimento web, principalmente o W3C. Mas a coisas é meio zoada. Ter o mesmo layout funcionamento perfeitamente em todos os navegadores é um dom e eu não tenho esse dom, mesmo porque o DOM muda bastante.😀

Recentemente eu tive um problema, uma requisição HTTP Post realizada através do jQuery não estava funcionando no IE 9, mas no IE 10 sim. A mensagem de erro do browser era muito bem detalhada, era o seguinte “No Transport”. Depois de algum tempo procurado encontro que o problema ocorre por causa das requisições entre 2 servidores (chamada de CORS, http://pt.wikipedia.org/wiki/Cross-origin_resource_sharing) e que o IE 9 não implementa totalmente isso. Depois de muita troca de código e procura, consigo evoluir o problema, a mensagem passou a ser “Acesso Negado”.

Horas (no plural mesmo) procurando uma solução e finalmente encontro um post http://stackoverflow.com/questions/10232017/ie9-jquery-ajax-with-cors-returns-access-is-denied com o que viria a ser a minha solução. A explicação é bem simples, o jquery ajax utiliza o XMLHttpRequest para realizar a requisição, porem o IE 9 não permite utiliza-lo neste cenário. Existe um outra solução, que somente o IE suporta, utilizar o XDomainRequest.

Um cara, e eu confio em alguém vestido de Batman, criou um código que modifica o comportamento do jquery ajax para usar o XDomainRequest quando necessário. Obrigado Julian Aubourg (https://github.com/jaubourg).

Depois disso tudo funcionou?? Não, claro que não, nada é tão fácil, tivemos que alterar o serviço pois o XDomainRequest transfere os dados de maneira diferente do XMLHttpRequest. Finalmente achamos um meio termo que funcionou para ambos.

Moral da história: poderia só existir o Netscape Navigator.

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s