Solução alternativa da política de mesma origem usando document.domain em Javascript
Estou enfrentando problemas de política de mesma origem em Javascript. Eu li sobre uma solução alternativa para isso usando odocument.domain
variável, mas não consigo obter a solução alternativa para o trabalho. A solução alternativa é que você deve poder definirdocument.domain
para'example.com'
para que, se você executar o código defoo.example.com
pode carregar dados via XHR debar.example.com
.
Detalhes sobre a solução alternativa estão aqui:
https://developer.mozilla.org/En/Same_origin_policy_for_JavaScript
Meu código de exemplo - que não produz os resultados desejados - é executado a partir de um URL comohttp://foo.example.com/
:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<body>
<script>
document.domain = 'example.com';
window.onload = function() {
var req = new XMLHttpRequest();
var url = 'http://bar.example.com/';
req.open('GET', url, true);
req.onreadystatechange = function (aEvt) {
if (req.readyState == 4) {
var elem = document.getElementById('result');
if (req.status == 200) {
var data = req.responseText;
} else {
var data = "Error loading page: " + req.status;
}
elem.innerHTML = data;
}
};
req.send(null);
};
</script>
Result:<hr>
<div id="result"></div>
</body>
</html>
A saída deste código:
Result: Error loading page: 0
Se eu mudarurl
para'http://foo.example.com/'
, tudo funciona corretamente. Existe um erro no meu código de exemplo?
Não quero usar um proxy porque eles são mais lentos, menos eficientes e aumentam o tráfego em nosso servidor web. Seria muito legal se essa solução alternativa realmente funcionasse. Esta solução alternativa é "torta no céu"?