Solicitação de ajax entre subdomínios negada mesmo quando document.domain está definido corretamente
No meu aplicativo, tenho um site em um subdomínio (dev.u413.com) e uso o jQuery para fazer uma solicitação ajax para uma API JSON em outro subdomínio (api.u413.com). Quando inspeciono as solicitações nas ferramentas de desenvolvimento do Chrome e no Firefox Firebug, parece que minhas solicitações estão sendo impedidas peloAccess-Control-Allowed-Origin
. Eu colocodocument.domain
para um sufixo do domínio atual:document.domain = 'u413.com';
.
Aqui está o meu pedido:
$.ajax({
dataType: 'json',
data: { parseAsHtml: true, cli: 'help' },
url: 'http://api.u413.com/',
success: function (response) {
alert(response.Command);
}
});
Se eu modificar a solicitação ajax para estar no mesmo domínio, a solicitação será bem-sucedid
$.ajax({
dataType: 'json',
crossDomain: false,
data: { parseAsHtml: true, cli: 'help' },
url: 'http://dev.u413.com/',
success: function (response) {
alert(response.Command);
}
});
Por que isso acontece? O navegador não deve reclamar de problemas entre domínios desde que eu definadocument.domain
para um sufixo comum de ambos os subdomínios, de acordo com as diretrizes nosame origin policy.
Eu tenho o aplicativo trabalhando com jsonp atualmente, mas acho que as solicitações ajax adequadas devem estar funcionando de acordo com a mesma política de origem que vinculei acima. Prefiro não usar o jsonp se não precisar. Não é possível fazer solicitações regulares de ajax entre subdomínios?