Ajax вызывает поддомен

у меня есть один сервер, расположенный на example.com запуск apache, обслуживание моих статических html-файлов.

у меня также есть служба json, расположенная по адресу api.example.com запуск python с cherrypy.

запросы пользователя example.com и получить индекс html-страницы. На этой странице Я делаю запрос ajax с jquery в службу json. document.domain возвращает example.com

        $.ajax({
        type: 'GET',
        url: 'http://api.example.com/resource/',
        dataType: 'json',
        success: successCallback,
        error: errorHandler
    });

однако я не вижу тело ответа для запроса ajax в firebug. Это заставляет меня верить что браузер (FF) не поддерживает это.

каковы наилучшие методы для достижения этого? Я бы предпочел не использовать проксирование на бэкэнде apache для example.com если возможно.

5 ответов


вы также можете использовать JSONP путем добавления обратного вызова=? до конца url-адреса. jQuery уже знает, как обрабатывать эти типы запросов, но для обработки параметров обратного вызова требуются некоторые изменения на стороне сервера.


AJAX запрос поддерживается только в том же домене. Однако вы можете написать HTTP-прокси на предпочитаемом языке сценариев и вызвать этот http-прокси. Вы можете проверить это маленькое учебник на прокси AJAX, написанном на php.


попробуйте изменить свой домен в поддомене, например

<script type="text/javascript">    
  document.domain = 'example.com';
</script>

если не работает, измените свой документ.домен на странице домена тоже.


насколько я знаю, вы не можете делать AJAX кросс-домен.

почему междоменный Ajax является проблемой безопасности?

хотя я думаю, вы могли бы сделать iframe обходной путь

Кросс Поддомен Javascript


использовать документ.домен, чтобы сделать домен доменом верхнего уровня вместо поддомена.

document.domain="example.com"

Это подробно описано на MDN.