Ajax-запрос на другой домен (CORS)
По умолчанию, Ajax-запросы можно отправлять только в пределах текущего домена.
Чтобы отправлять Ajax-запрос на другой домен, на другом домене сначала надо разрешить принимать Ajax-запросы с других сайтов. Для этого сервер должен возвращать два заголовка:
- Access-Control-Allow-Origin (адрес сайта, с которого разрешена отправка Ajax-запросов);
- Access-Control-Allow-Methods (разрешенные типы передачи данных).
Access-Control-Allow-Origin: http://mysite.ru/ Access-Control-Allow-Methods: GET, POST
В заголовок «Access-Control-Allow-Origin» также можно указать значение «*», которое значит, что сервер может принимать Ajax-запросы с любых сайтов.
Access-Control-Allow-Origin: *
Отправка Ajax-запроса
Пример отправки GET-запроса:
var ajax = new XMLHttpRequest(); // выполнить код, когда придёт ответ с GET-запроса ajax.onreadystatechange = function() { if (ajax.readyState == 4) { if (ajax.status == 200 || ajax.status == 304) { // код при успешном запросе ajax.response; // ответ сервера } else { // код при ошибке } } } // Оправка GET-запроса ajax.open('GET', 'http://example.com/'); ajax.send();
Если на сервере установлены заголовки «Access-Control-Allow-Origin» и «Access-Control-Allow-Methods», то сервер вернёт ответ, иначе вернёт ошибку с кодом 404.
Во время отправки запроса на другой домен, браузер автоматически добавлят заголовок «Origin», который сообщает серверу, с какого сайта был сделан запрос.
Origin: http://mysite.ru/
Отправка Ajax-запросов на другие домены также называют CORS (Cross-Origin Resource Sharing).
Поддержка CORS работает во всех современных браузеров. В IE работает начиная с версии IE 10.
Авторизуйтесь, чтобы добавлять комментарии