Pergunta

Eu estou tentando escrever algum Javascript que mostra os dados com base em uma solicitação HTTP GET para um servidor em um domínio diferente. Pelo que tenho lido, isso é feito complicado devido à SOP (Política de Origem Same).

Estou curioso como Snap.com "Snap Shots" (visualizações de páginas web) de trabalho. Aqui está uma página de exemplo: http://premshree.livejournal.com/66129.html

Alguém poderia explicar como isso é possível? Para habilitar os snap.com "Snap Shots" tudo que você tem a fazer é adicionar um pouco de Javascrpt para o seu cabeçalho. Parece que o exemplo página está desobedecendo SOP.

Foi útil?

Solução

Os "Snap Shots" JavaScript está hospedado em snap.com, por isso, tem acesso a todas as coisas Snap.com ou seja, a página de previews, como o faz de fato obedecer a política de mesma origem. Não seria, no entanto, ser capaz de fazer todas as chamadas para todas as páginas em livejournal.com.

Espero que isso ajude.

Outras dicas

Após a resposta de Ian, você pode obter AJAX de atravessar a barreira de domínio apresentado por SOP usando JSONP. O que é JSONP? É o mesmo objeto JSON que todos nós conhecemos e amamos, mas é envolvido com uma função: JSON:

{
  prop1: "a",
  prop2: 7
}

JSONP:

myfunction(
{
  prop1: "a",
  prop2: 7
});
Como você pode ver, o objeto JSON é passado como um parâmetro para a função myfunction. Então, se você fosse para ligação a um recurso de script que está hospedado em um domínio diferente usando uma tag script simples, e esse recurso retornou dados JSONP, então você pode simplesmente definir um myfunction função que aceita um objeto JSON e, em seguida, fazer algo com ele. JQuery suporta chamadas JSONP Ajax usando o getJSON método. Ao invés de fazer uma chamada de AJAX, jQuery insere um apontador tag script para o URL a partir do qual você está tentando obter dados. Quando as cargas de script, a sua função de retorno é executado e voila! - você tem dados JSON! Esta técnica tem 3 pré-requisitos.

  1. O serviço a partir do qual você está tentando solicitação de dados retorna JSON (por padrão ou a pedido usando um parâmetro).
  2. O serviço suporta JSONP, permitindo-lhe especificar uma função de chamada de retorno no qual a envolver os dados JSON.
  3. Você confia este bastante fonte externa para permitir que seu código para executar em seu site.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top