Ajax Crossbrowser no IE8 e FF3

{ March 9th, 2008 }


cmilfont

Autor: cmilfont

Uma confusão muito comum até em desenvolvedores profissionais é não saber que o objeto XHR segue o mesmo princípio de segurança do javascript e por isso não pode executar uma chamada remota a outro endereço que não o mesmo de onde o arquivo é chamado. Isso é chamado de “Same Domain Policy“.

A alternativa para contornar esse problema é usar a estratégia de Scripttag quando o recurso externo permite ou usar um script como proxy no servidor para buscar o recurso e devolver via Ajax. Existem outras formas mais porcas de fazer isso que nem merecem consideração.

O Firefox 3 vem com o recurso de XHR Crossbrowser, agora seguido do IE8. Sinceramente isso não muda nada a curto prazo, até termos as versões anteriores do FF e principalmente do IE aposentadas, teremos que contornar isso com as gambiarras de sempre.

O John Resig (Criador do JQuery) mostra nesse post como usar isso no FF3. Lembrando que isso só funciona no FF3 que ainda é beta.

Categories: Ajax, JavaScript, Web Development, XMLHttpRequest ~ ~ Trackback


Assine os comentários deste artigo.


Adicionar ao Rec6

8 Responses to “Ajax Crossbrowser no IE8 e FF3”

  1. 1
    Christiano via Rec6

    Ajax Crossbrowser no IE8 e FF3 – CMilfont Tech…

    Novas funcionalidades importantes para Mashups nos browsers líderes do mercado….

  2. 2
    Rafael Ponte

    @Milfont
    “A alternativa para contornar esse problema é usar a estratégia de Scripttag quando o recurso externo permite ou usar um script como proxy no servidor para buscar o recurso e devolver via Ajax. Existem outras formas mais porcas de fazer isso que nem merecem consideração.”

    Não entendi bem o que você disse :) Mas você está falando de acessar o servidor “local” para que ele acessa um recurso externo e retorne ao browser, é isso? Algo semelhante aque funcionalidade já pronta do DWR?

    Ótimo post, valeu!

  3. 3
    Handerson Frota

    Essas formas porcas seriam o que ? Não entendi também o que você quis dizer.

    Abraços

  4. 4
    cmilfont

    @Rafael Ponte

    “Não entendi bem o que você disse :) Mas você está falando de acessar o servidor “local” para que ele acessa um recurso externo e retorne ao browser, é isso? Algo semelhante aque funcionalidade já pronta do DWR?”

    Você acessa o servidor de origem do código javascript para ele acessar um recurso remoto em outro servidor e servir como proxy já que o javascript não permite esse acesso.

  5. 5
    cmilfont

    @Handerson Frota

    “Essas formas porcas seriam o que ? Não entendi também o que você quis dizer.”

    Usar IFrame, usar técnica proprietária do Browser e tantos outros artifícios.

  6. 6
    Rafael Ponte

    Valeu, Milfont, foi o que eu imaginei mesmo :)

    Ei, eiiiii, eiiiiiii.. iframe não é tão porco assim, rss.. iframes para upload funcionam que é uma beleza, o próprio Gmail se utiliza disso.

    Mas é um caso especifico, pois o Gmail não tem intenção de se prender ao navegador ou mesmo prejudicar a usabilidade somente para não usar iframe.

  7. 7
    Edu

    O iE7 e iE6 não tem problemas de restrição nesse sentido quando executados com o Js local, vcs já perceberam isso?

    Eu estou fazendo uma aplicação para Windows em Js que se beneficia disso. Se vc pegar um script que rode ajax da sua máquina e requisita qualquer página externa ele funciona que é uma beleza….O curioso é que se vc manda o script para algum servidor ele pára de funcionar, por causa da segurança.

    O FF não roda caso não estiver no proprio dominio, mesmo localmente (localhost).

    Abraços

  8. 8
    HTML não serve para REST - CMilfont Tech

    [...] caso a aplicação vá funcionar no mesmo host da API, mas se minha aplicação está hospedada em outro local já não funciona. Outra estratégia que não funciona é Scripttag porque esse só usa GET para [...]

Leave a Reply