В моем приложении у меня есть веб-сайт в одном субдомене (dev.u413.com), и я использую jQuery для выполнения запроса ajax к JSON api в другом субдомене. (api.u413.com). Когда я проверяю запросы в инструментах разработчика Chrome и Firefox Firebug, выясняется, что мои запросы блокируются Access-Control-Allowed-Origin
. Я установил document.domain
в суффикс текущего домена: document.domain = 'u413.com';
.
Вот мой запрос:
$.ajax({
dataType: 'json',
data: { parseAsHtml: true, cli: 'help' },
url: 'http://api.u413.com/',
success: function (response) {
alert(response.Command);
}
});
Если я изменю запрос ajax, чтобы он находился в том же домене, то запрос будет успешным.
$.ajax({
dataType: 'json',
crossDomain: false,
data: { parseAsHtml: true, cli: 'help' },
url: 'http://dev.u413.com/',
success: function (response) {
alert(response.Command);
}
});
Почему это происходит? Браузер не должен жаловаться на междоменные проблемы, поскольку я установил document.domain
как общий суффикс обоих поддоменов в соответствии с руководящими принципами той же политики происхождения .
В настоящее время у меня есть приложение, работающее с jsonp, но я чувствую, что правильные запросы ajax должны работать в соответствии с той же политикой происхождения, которую я указал выше. Я бы предпочел не использовать jsonp, если мне это не нужно. Разве нельзя делать регулярные запросы ajax через поддомены?