Не позволяйте этому сообщению сбить вас с толку, когда в вашем приложении возникают проблемы с HTTP-запросами.
Будь мной. Пишите код.
Внезапно, когда я пытаюсь выполнить GET-запрос к моему серверу API прямо из браузера, я вижу сообщение об ошибке:
«На запрошенном ресурсе отсутствует заголовок« Access-Control-Allow-Origin »»

… Что?
Вкратце, это означает:
«Ваше приложение должно делать запросы к серверу, на котором оно живет».
Почему? И что?
На моем сервере API нет кода моего приложения. Когда я запрашиваю что-то из БД или других ресурсов из API, я не могу сделать запрос, потому что сервер API не является «локальным» сервером.
Я до сих пор не совсем понял техническую "ПОЧЕМУ" этого. Итак, давайте рассмотрим два очень общих примера.
Пример 1:
Запросы, не нарушающие доступ, выглядят примерно так:
Сервер A: «У меня есть товары»
Сервер B: «Я хотел бы получить доступ к товарам, пожалуйста».
Сервер A: «Сервер B проверен, теперь у вас есть доступ к товарам».
Пример 2:
Запрос, который ДЕЙСТВИТЕЛЬНО нарушает политики доступа, выглядит примерно так:
Сервер A: «У меня есть товары»
Клиент сервера B: «Я слышал, что у вас есть товары».
Сервер A: «КЛИЕНТ СЕРВЕРА B ОТКАЗАН. Я НЕ ЗНАЮ ВАС. ОТПУСТИТЕ МОЙ КОШЕЛЕК ».
Поразмыслив над этим, я понял, что это защищает владельцев сервера B от того, чтобы люди выполняли вредоносный код с клиентов их сервера.
Это заставляет приложение (клиент) делать запросы к серверу, на котором оно размещено, а затем этот сервер отправляет запросы другим серверам.
Примечание. Похоже, это применимо только к запросам, сделанным после загрузки страницы.
Ну, как мне делать запросы, которые мне нужно сделать после загрузки страницы?
Вот, Прокси-сервер.
Если вы намереваетесь выполнять асинхронные HTTP-запросы к ресурсам, которые НЕ находятся на том же сервере, на котором находится ваше приложение, хорошим решением для этого является запуск прокси-сервера.
Что такое прокси сервер?
Прокси-сервер, по-моему, по сути, просто расширение вашего приложения. Он может служить многим целям, мои любимые три:
- Легко исполняемый код на стороне сервера
- Несложные маршруты. (‘/ Easy-route’)
- И НАКОНЕЦ, вы можете использовать свой прокси-сервер для запросов ресурсов, которые не находятся на сервере, на котором находится ваше приложение.
Вот - очень простой пример работы прокси-сервера при переполнении стека. Хотя я рекомендую просто использовать его как шаблон и полностью использовать свой собственный для более глубокого понимания возможностей прокси.
Я определенно не эксперт. Но потраченное время на то, чтобы возиться и узнать о том, как работают запросы, помогло мне наткнуться на место, где я могу делать довольно крутые вещи, больше не получая этого надоедливого сообщения об ошибке.
С полномочиями прокси-сервера жизнь становится намного лучше!
Спасибо за чтение! ❤