Не позволяйте этому сообщению сбить вас с толку, когда в вашем приложении возникают проблемы с HTTP-запросами.

Будь мной. Пишите код.

Внезапно, когда я пытаюсь выполнить GET-запрос к моему серверу API прямо из браузера, я вижу сообщение об ошибке:

«На запрошенном ресурсе отсутствует заголовок« Access-Control-Allow-Origin »»

… Что?

Вкратце, это означает:
«Ваше приложение должно делать запросы к серверу, на котором оно живет».

Почему? И что?

На моем сервере API нет кода моего приложения. Когда я запрашиваю что-то из БД или других ресурсов из API, я не могу сделать запрос, потому что сервер API не является «локальным» сервером.

Я до сих пор не совсем понял техническую "ПОЧЕМУ" этого. Итак, давайте рассмотрим два очень общих примера.

Пример 1:

Запросы, не нарушающие доступ, выглядят примерно так:

Сервер A: «У меня есть товары»
Сервер B: «Я хотел бы получить доступ к товарам, пожалуйста».
Сервер A: «Сервер B проверен, теперь у вас есть доступ к товарам».

Пример 2:

Запрос, который ДЕЙСТВИТЕЛЬНО нарушает политики доступа, выглядит примерно так:

Сервер A: «У меня есть товары»
Клиент сервера B: «Я слышал, что у вас есть товары».
Сервер A: «КЛИЕНТ СЕРВЕРА B ОТКАЗАН. Я НЕ ЗНАЮ ВАС. ОТПУСТИТЕ МОЙ КОШЕЛЕК ».

Поразмыслив над этим, я понял, что это защищает владельцев сервера B от того, чтобы люди выполняли вредоносный код с клиентов их сервера.

Это заставляет приложение (клиент) делать запросы к серверу, на котором оно размещено, а затем этот сервер отправляет запросы другим серверам.

Примечание. Похоже, это применимо только к запросам, сделанным после загрузки страницы.

Ну, как мне делать запросы, которые мне нужно сделать после загрузки страницы?

Вот, Прокси-сервер.

Если вы намереваетесь выполнять асинхронные HTTP-запросы к ресурсам, которые НЕ находятся на том же сервере, на котором находится ваше приложение, хорошим решением для этого является запуск прокси-сервера.

Что такое прокси сервер?

Прокси-сервер, по-моему, по сути, просто расширение вашего приложения. Он может служить многим целям, мои любимые три:

  1. Легко исполняемый код на стороне сервера
  2. Несложные маршруты. (‘/ Easy-route’)
  3. И НАКОНЕЦ, вы можете использовать свой прокси-сервер для запросов ресурсов, которые не находятся на сервере, на котором находится ваше приложение.

Вот - очень простой пример работы прокси-сервера при переполнении стека. Хотя я рекомендую просто использовать его как шаблон и полностью использовать свой собственный для более глубокого понимания возможностей прокси.

Я определенно не эксперт. Но потраченное время на то, чтобы возиться и узнать о том, как работают запросы, помогло мне наткнуться на место, где я могу делать довольно крутые вещи, больше не получая этого надоедливого сообщения об ошибке.

С полномочиями прокси-сервера жизнь становится намного лучше!

Спасибо за чтение! ❤