Como os mashups funcionam com a política da mesma organização?


Respostas:


7

Soluções entre navegadores

JSONP

Se a API que você está tentando acessar suportar JSONP , você só precisará fornecer um nome de função javascript na sua solicitação. O JSONP retornará um javascript como o myfunc({the:data});qual você pode executar como um javascript comum, e é por isso que você criaria uma nova <script src="www.website.com/somecall?jsonp=myfunc">tag para "enviar uma solicitação" (o jQuery faz isso automaticamente se você usar type: jsonpem $.ajaxsolicitações).

A desvantagem é que ela requer que o provedor da API suporte JSONP.

Instantâneo

O Flash pode acessar conteúdo entre domínios, desde que o site de destino tenha um crossdomain.xmlarquivo na raiz que diga que é permitido, o que geralmente acontece em servidores que fornecem uma API.

A desvantagem é que ele requer Flash no navegador do usuário e que o site do qual você obtém dados deve ter um crossdomain.xml que permita solicitações entre domínios.

Script do lado do servidor no mesmo nome de domínio

Linguagens do lado do servidor, como PHP, não têm restrições de BS no mesmo domínio, portanto, você pode ter um script que atua como proxy (por exemplo, faça o download através de uma extensão http como cURL).

O benefício adicional é que você pode limpar os dados (ou mesmo mashup de várias fontes) no servidor, antes de encaminhá-los para sua página da web / javascript, para que você possa extrair apenas a parte útil dos dados, o que é bom ao fazer aplicativos da web móveis onde a largura de banda pode ser um problema.

A desvantagem é que todas as solicitações precisam passar pelo servidor, o que aumenta a carga no servidor.

No entanto, o benefício é que ele funcionaria com qualquer recurso, pois não requer que o destino suporte crossdomain ou jsonp. Então, se nada mais funcionar, isso funcionaria.


Soluções específicas para alguns navegadores

Internet Explorer

O Internet Explorer possui solicitação entre domínios

Raposa de fogo

O Firefox 3.5+ possui o padrão de compartilhamento de origem , mas requer o recurso que você está tentando acessar para incluir cabeçalhos especiais, por exemplo, no PHP:

header("content-type: Access-Control-Allow-Origin: *");
header("content-type: Access-Control-Allow-Methods: GET");

Alguns outros navegadores principais também suportam isso ; portanto, se você não precisar suportar navegadores antigos e conseguir os recursos que está tentando acessar para enviar esses cabeçalhos, essa pode ser sua melhor aposta, caso contrário, o servidor script seria minha recomendação.


O Firefox também tem uma configuração de usuário capability.policy.default.XMLHttpRequest.open, mas eu não contaria com a alteração de uma configuração em seu navegador.


0

Você pode usar a API (de outro domínio) para isso. Seu Javascript chamará o arquivo PHP (ou outro arquivo de script) que está no seu servidor Web (seu domínio), que chamará a API (de outro domínio usando CURL) e obterá a resposta.


Esta resposta não precisa ser tão específica sobre a tecnologia usada no servidor.
funkybro

@funkybro sim, foi apenas um exemplo ... nada específico ...
Harish Kurup
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.