АКЦИЯ: бесплатные месячные курсы по созданию сайтов
на выбор: верстка, JavaScript, PHP или фреймворки. Сегодня последний день для записи! Жми!
⊗jsSpAXCP 258 of 294 menu
Бесплатная Тренировка Верстки. Приглашаются желающие поверстать!

Политика CORS в AJAX запросах в JavaScript

Через AJAX нельзя просто так делать запросы к другим сайтам (cross-origin requests). Такие запросы регулируются политикой CORS. Вкратце, по этой политике сайт, на который вы направляете запрос, должен согласиться на него ответить. Для этого он должен отдать соответствующие HTTP заголовки.

Давайте попробуем на практике. Запустим два тестовых сервера на разных портах. Первый на 3001, а второй на 3002. Давайте попробуем отправить AJAX запрос со второго сайта на первый.

Пусть первый сайт готов принимать следующие запросы:

export default { '/handler/': function({ body }) { console.log(body); return 'success'; } }

Отправим со второго сайта запрос на первый:

button.addEventListener('click', function() { let promise = fetch('http://localhost:3001/handler/', { method: 'post', body: JSON.stringify([1, 2, 3, 4, 5]), headers: { 'Content-Type': 'application/json', }, }); });

В результате запрос не выполнится, а в консоли браузера мы увидим ошибку, связанную с политикой CORS.

Чтобы запрос выполнился, первый сервер должен отдать специальные HTTP заголовки. Давайте их укажем - и запрос со второго сайта начнет проходить на первый:

export default { '/handler/': function({ body }) { resp.setHeader('Access-Control-Allow-Origin', '*'); resp.setHeader('Access-Control-Allow-Headers', '*'); console.log(body); return 'success'; } }
enru