Permite resolver ajax cross-domain, totalmente no cliente, usando tags de script
-
23-08-2019 - |
Pergunta
Eu sei, há JSONP, que envolve a cooperação do servidor para o nome do espaço de dados.
O que está me incomodando é o fato de que o conteúdo da tag script src
é Avaliados , mas é não disponíveis para leitura.
<script src="http://www.google.com"></script>
Tudo o que precisamos descobrir é como o espaço de nomes de dados, isso é tudo. É claro que eu tentei coisas muito idiotas sem resultado relevante (eu sei que isso não funciona, mas você pode ver o que eu estou tentando alcançar):
<script>eval('var namespace="');</script>
<script src="http://www.google.com"></script>
<script>eval('";');</script>
Desde há informações realmente nenhuma relevantes sobre como o conteúdo src
é avaliada, eu sei que é escopo global, mas se pudéssemos traçar etapas de avaliação ou talvez cadeia evals âmbito de alguma forma (não muita documentação sobre isso como bem), que poderia resolver este irritante " avaliadas, mas não legível " coisa.
Todas as idéias?
Solução
HTML5 fornece window.postMessage
que fornece um mecanismo para troca de mensagens entre domínios de segurança, e é suportado pelo Firefox 3, Opera 9.6, e WebKit nightlies.
Dito sua sugestão acima podem não trabalho porque requer um comportamento fundamentalmente diferente da eval
de javascript. parses eval
e executa a string dada no contexto atual - o que você está pedindo é que a mudança eval o código real da função que contém. por exemplo.
for (var i = 0; i < 10; i++) eval("; doSomething();");
se tornaria
for (var i = 0; i < 10; i++) ; doSomething();;
significa que o loop for fique vazia e, doSomething
só seria chamado uma vez. Claramente isso iria resultar em incrivelmente difícil de compreender a semântica, bem como tornando-se substancialmente menos seguro para uso, como eval ganharia a capacidade de influenciar diretamente o fluxo de controle.
Outras dicas
Eu não estou certo de que este é de todo possível devido às políticas de segurança do navegador.
Eu estou inclinado a dizer deixá-lo. Esses tipos de problemas serão resolvidos, mas não por hackers em torno do que já temos. A web é fundamentalmente quebrado a esse respeito. O fato de que qualquer script de um domínio pode ser executado em outra é uma vulnerabilidade de segurança grave que vai dificultar o crescimento da web se não for controlada.
http://www.slideshare.net/webdirections/douglas -crockford-ajax-security-apresentação