XMLHttpRequest não pode carregar o URL. Origem não permitida pelo Access-Control-Allow-Origin
Quero criar um site pequeno que use dados xml de outro domínio. (Dados meteorológicos do Weather Underground: www.wunderground.com). Estou usando apenas html e javascript e escrevendo tudo no Visual Studio Express 2012 para Web.
Eu faço e envio a solicitação xml da seguinte forma:
url = "http://api.wunderground.com/api/3c6e3d838e217361/geolookup/conditions/forecast/q/51.11999893,-114.01999664.xml";
xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET", url, false);
xmlhttp.send();
xmlDoc = xmlhttp.responseXML;
O problema é que recebo o seguinte erro no console do desenvolvedor do Google Chrome (versão 29.0.1547.66):
XMLHttpRequest cannot load http://api.wunderground.com/api/3c6e3d838e217361/geolookup/conditions/forecast/q/51.11999893,-114.01999664.xml. Origin http://localhost:49933 is not allowed by Access-Control-Allow-Origin.
Ou isso no console do Internet Explorer (versão 10.0.8):
SEC7118: XMLHttpRequest for http://api.wunderground.com/api/3c6e3d838e217361/geolookup/conditions/forecast/q/51.11999893,-114.01999664.xml required Cross Origin Resource Sharing (CORS).
Pelo que entendi, CORS (http://enable-cors.org/) precisa de esforço tanto pelo cliente quanto pelo servidor para funcionar. Eu quero assumir que a API Weather Underground sabe o que está fazendo e ativou as coisas apropriadamente, como configurar o cabeçalho de resposta para incluir 'Access-Control-Allow-Origin: *', e eu sei que recebo os mesmos problemas quando Eu tento o mesmo código usando outro provedor de API (World Weather Online). Então eu acho que isso é algo que eu deveria ser capaz de corrigir no meu código de cliente. Outra resposta SO onde a sugestão é corrigir o cabeçalho do lado do servidor:CORS com XMLHttpRequest
Eu tentei encontrar respostas, mas não entendo artigos como:http://dev.opera.com/articles/view/dom-access-control-using-cross-origin-resource-sharing/ http://saltybeagle.com/2009/09/cross-origin-resource-sharing-demo/