Histórico da Página
...
Índice | ||||||||
---|---|---|---|---|---|---|---|---|
|
Objetivo
O objetivo desse guia é apresentar a integração de widgets com serviços JSON de outras fontes de dados, que estão fora do domínio do servidor fluigFluig. Utilizaremos a técnica de Json Padding - JSONP - para obtermos dados de terceiros com uma função de callback.
...
Se você chegou aqui é porque provavelmente estava desenvolvendo um widget e se deparou com uma mensagem similar a apresentada abaixo.:
Bloco de código |
---|
XMLHttpRequest cannot load http://pudim.com.br/service. No ‘Access-Control-Allow-Origin’ header is present on the requested resource. Origin ‘http://pudim.com.br’ is therefore not allowed access. |
Páginas web comuns podem utilizar o objeto XMLHttpRequest para enviar e receber dados de servidores remotos, porém as ações que podem essas páginas poderão realizar são limitadas pela política de mesma origem (same-origin policy).
Este é um conceito muito importante no modelo de segurança dos navegadores atuais, pois define que scripts de uma página "A" somente podem acessar dados de uma página "B" somente se ambas estiverem na possuírem a mesma origem. A origem de uma página é definida pelo seu protocolo, endereço e porta.
Felizmente, nem tudo é afetado pela same-origin policy. Por exemplo, é possível carregar uma imagem externa ou um script de um domínio diferente da página atual. Isto é exatamente o que você faz quando utiliza uma imagem externa numa página. Entretanto, isso ainda não ajuda muito quando precisamos é o suficiente quando precisa-se obter dados JSON para exibir e exibi-los em um widget no fluig na plataforma Fluig.
JSONP pode ser a solução
JSONP - (JSON with Padding - ) é uma técnica que nos dispõe disponibiliza uma forma de acessar os dados JSON que precisamos. Isto é feito com os dados sendo empacotados através do empacotamento dos dados em uma função de callback (o "padding") que será interpretada pelo navegador em JavaScript. Esta função precisa ser definida no widget que receberá o retorno JSONP.
...