offline version v3
Запись на курсы по HTML, CSS, JavaScript, PHP, фреймворкам и CMS,
а также: помощь в поиске работы и заказов, стажировка на реальных проектах→
⊗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